// 文档 https://github.com/hooke007/MPV_lazy/wiki/4_GLSL

// CuNNy 8x32 DS (dp4a)
// Copyright (c) 2024 funnyplanter

// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 3.0 of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this program.  If not, see <https://www.gnu.org/licenses/>.
/* ------------------------------------------------------------------- */


//!DESC [CuNNy_8x32_DS_vk] -in
//!HOOK LUMA
//!COMPUTE 32 16 8 8
//!BIND LUMA
//!SAVE in
//!WIDTH LUMA.w 4 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
#ifdef GL_EXT_shader_explicit_arithmetic_types_float16
#	define V4 f16vec4
#	define M4 f16mat4
#	define F float16_t
#else
#	define V4 vec4
#	define M4 mat4
#	define F float
#endif
#define l0(x, y) F((LUMA_mul * texelFetch(LUMA_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(1, 1) + ivec2(0, 0), 0)).r)
shared F G[1][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(4, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			G[0][ay][ax] = l0(x - 1, y - 1);
		}
	}
	barrier();
	F s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2;
	V4 r0, r1, r2, r3, r4, r5, r6, r7;
	r0 = V4(0.0); r1 = V4(0.0); r2 = V4(0.0); r3 = V4(0.0); r4 = V4(0.0); r5 = V4(0.0); r6 = V4(0.0); r7 = V4(0.0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2];
	r0 += V4(-1.311e-02, 4.899e-02, -2.872e-02, 1.025e-01) * s0_0_0;
	r1 += V4(2.701e-02, 3.629e-01, -3.880e-02, -2.005e-02) * s0_0_0;
	r2 += V4(3.196e-01, 3.830e-02, 1.127e-01, 3.503e-01) * s0_0_0;
	r3 += V4(-3.970e-02, -1.344e-02, -1.051e-01, -6.514e-03) * s0_0_0;
	r4 += V4(3.514e-02, -1.539e-01, 7.631e-03, -1.041e-03) * s0_0_0;
	r5 += V4(2.877e-02, -2.035e-01, 6.299e-02, -1.314e-02) * s0_0_0;
	r6 += V4(1.066e-01, 4.276e-01, -8.902e-02, 5.562e-02) * s0_0_0;
	r7 += V4(-9.284e-02, 1.234e-01, 2.064e-02, -2.588e-02) * s0_0_0;
	r0 += V4(-5.205e-02, -5.876e-02, -1.668e-01, -2.779e-02) * s0_0_1;
	r1 += V4(-3.169e-02, 2.937e-01, 6.189e-02, -8.127e-02) * s0_0_1;
	r2 += V4(-1.976e-02, -1.256e-01, 1.487e-01, -8.018e-02) * s0_0_1;
	r3 += V4(-7.826e-02, -2.309e-01, -2.288e-01, -2.895e-02) * s0_0_1;
	r4 += V4(7.178e-02, -3.166e+00, -5.667e-04, 2.301e-02) * s0_0_1;
	r5 += V4(7.114e-02, 9.482e-03, 2.881e-01, 4.577e-02) * s0_0_1;
	r6 += V4(-4.636e-01, -8.728e-02, -3.290e-01, -4.385e-01) * s0_0_1;
	r7 += V4(-8.080e-02, 1.183e-02, -1.903e-02, 1.412e-02) * s0_0_1;
	r0 += V4(3.400e-03, 1.442e-02, -3.047e-03, -5.645e-02) * s0_0_2;
	r1 += V4(7.520e-03, 6.197e-02, -1.827e-02, -8.235e-03) * s0_0_2;
	r2 += V4(4.259e-02, 6.155e-02, 1.930e-01, -1.645e-01) * s0_0_2;
	r3 += V4(1.401e-01, 2.527e-01, -2.324e-02, 4.896e-02) * s0_0_2;
	r4 += V4(1.166e-01, 1.378e-01, 2.867e-04, -1.290e-02) * s0_0_2;
	r5 += V4(-1.096e-01, -1.947e-01, -4.852e-02, -2.233e-01) * s0_0_2;
	r6 += V4(8.799e-03, 2.598e-01, 3.955e-01, 1.404e-02) * s0_0_2;
	r7 += V4(6.848e-02, -1.458e-01, 3.201e-03, 7.879e-03) * s0_0_2;
	r0 += V4(-1.754e-03, -4.443e-01, -1.131e-01, -2.735e-01) * s0_1_0;
	r1 += V4(6.155e-01, 5.725e-02, 3.122e-01, 1.890e-01) * s0_1_0;
	r2 += V4(-4.855e-01, -7.839e-02, -2.881e-01, -3.311e-01) * s0_1_0;
	r3 += V4(1.489e-01, 3.008e-02, 8.362e-02, -6.421e-02) * s0_1_0;
	r4 += V4(5.873e-04, -6.100e+00, -3.928e-02, -4.491e-01) * s0_1_0;
	r5 += V4(-2.355e-02, 1.313e-01, -1.322e-01, 6.872e-03) * s0_1_0;
	r6 += V4(-2.858e-01, -2.758e-01, 4.186e-02, -1.646e-02) * s0_1_0;
	r7 += V4(3.469e-01, 4.341e-01, 2.115e-01, 3.955e-01) * s0_1_0;
	r0 += V4(4.981e-01, 1.059e-01, 5.022e-01, 3.701e-01) * s0_1_1;
	r1 += V4(-6.113e-01, -2.587e-01, -3.855e-01, -3.479e-02) * s0_1_1;
	r2 += V4(-2.776e-01, -4.527e-01, -2.572e-01, 7.447e-02) * s0_1_1;
	r3 += V4(2.868e-01, 3.388e-01, -5.180e-02, -2.787e-01) * s0_1_1;
	r4 += V4(-9.930e-02, -1.579e-01, -2.032e-01, -6.032e-02) * s0_1_1;
	r5 += V4(3.170e-01, 2.466e-01, 1.191e-01, 4.382e-01) * s0_1_1;
	r6 += V4(5.155e-01, -1.382e-01, 8.374e-02, 4.014e-01) * s0_1_1;
	r7 += V4(-8.946e-03, -5.291e-03, 8.718e-03, 6.194e-02) * s0_1_1;
	r0 += V4(1.422e-03, 1.082e-02, -2.357e-02, -5.543e-02) * s0_1_2;
	r1 += V4(2.613e-04, -5.480e-02, 4.938e-02, 7.806e-02) * s0_1_2;
	r2 += V4(1.022e-01, 5.603e-01, 1.047e-01, -1.882e-02) * s0_1_2;
	r3 += V4(-4.580e-01, -3.311e-01, -2.073e-01, -8.433e-02) * s0_1_2;
	r4 += V4(-1.748e+00, 4.061e-03, 2.981e-02, 2.658e-02) * s0_1_2;
	r5 += V4(-3.408e-01, 6.838e-03, 6.245e-02, -2.349e-01) * s0_1_2;
	r6 += V4(-2.124e-01, 1.348e-01, -1.583e-01, 7.039e-03) * s0_1_2;
	r7 += V4(-7.295e-02, -3.477e-01, 3.904e-04, -6.463e-02) * s0_1_2;
	r0 += V4(-5.886e-03, 6.473e-02, 6.422e-02, -4.443e-02) * s0_2_0;
	r1 += V4(2.388e-03, -1.804e-01, -4.565e-05, 1.225e-01) * s0_2_0;
	r2 += V4(1.091e-01, 3.454e-02, 2.239e-03, -1.126e-01) * s0_2_0;
	r3 += V4(3.234e-02, -5.372e-02, 3.677e-01, 2.546e-01) * s0_2_0;
	r4 += V4(1.517e-02, -1.255e-02, 1.243e-02, 4.385e-01) * s0_2_0;
	r5 += V4(2.014e-03, -2.234e-02, -6.009e-02, -1.743e-02) * s0_2_0;
	r6 += V4(-6.291e-02, -1.554e-01, -5.031e-02, -3.347e-02) * s0_2_0;
	r7 += V4(-6.615e-02, 1.622e-01, 1.330e-03, -7.278e-02) * s0_2_0;
	r0 += V4(-2.482e-02, 2.916e-01, -1.811e-01, -5.878e-02) * s0_2_1;
	r1 += V4(-4.135e-03, -2.450e-01, 2.278e-02, -8.250e-01) * s0_2_1;
	r2 += V4(1.677e-02, -5.504e-02, -1.802e-02, 6.121e-02) * s0_2_1;
	r3 += V4(-6.891e-02, -5.532e-05, 1.327e-01, 1.687e-01) * s0_2_1;
	r4 += V4(5.463e-02, -8.446e-01, 1.444e-02, 5.267e-02) * s0_2_1;
	r5 += V4(-3.956e-01, -6.058e-02, -2.846e-01, 1.185e-02) * s0_2_1;
	r6 += V4(1.323e-01, -3.036e-02, -1.803e-02, 2.108e-02) * s0_2_1;
	r7 += V4(-1.033e-01, -3.598e-02, -2.484e-02, -3.199e-01) * s0_2_1;
	r0 += V4(-1.005e-02, -2.621e-02, -2.399e-02, 3.808e-02) * s0_2_2;
	r1 += V4(-1.926e-03, -3.292e-02, -1.103e-02, 6.595e-02) * s0_2_2;
	r2 += V4(-1.594e-01, 2.194e-02, 4.655e-03, 2.628e-02) * s0_2_2;
	r3 += V4(5.178e-02, 1.229e-02, 3.522e-02, -1.085e-03) * s0_2_2;
	r4 += V4(7.840e-02, 7.496e-02, -3.830e-03, -1.805e-02) * s0_2_2;
	r5 += V4(4.449e-01, -9.260e-02, -8.821e-03, -7.016e-03) * s0_2_2;
	r6 += V4(-8.711e-02, 1.584e-01, 1.732e-02, -1.105e-02) * s0_2_2;
	r7 += V4(-8.754e-02, -1.910e-01, 1.290e-02, 8.062e-03) * s0_2_2;
	r0 += V4(-1.084e-02, 1.081e-02, 6.454e-03, 2.561e-02);
	r0 = clamp(r0, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(0, 0), vec4(r0));
	r1 += V4(5.666e-03, 3.852e-03, 3.239e-02, 2.603e-03);
	r1 = clamp(r1, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(1, 0), vec4(r1));
	r2 += V4(-7.807e-02, 1.229e-02, 4.926e-03, -6.119e-03);
	r2 = clamp(r2, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(0, 1), vec4(r2));
	r3 += V4(-7.613e-02, 5.927e-03, 7.831e-03, 1.507e-02);
	r3 = clamp(r3, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(1, 1), vec4(r3));
	r4 += V4(4.433e-02, 6.881e-02, 7.382e-02, -9.239e-03);
	r4 = clamp(r4, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(2, 0), vec4(r4));
	r5 += V4(-7.517e-03, -8.460e-03, 1.385e-02, 1.164e-02);
	r5 = clamp(r5, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(3, 0), vec4(r5));
	r6 += V4(-9.373e-09, -3.838e-01, -5.955e-03, 2.448e-02);
	r6 = clamp(r6, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(2, 1), vec4(r6));
	r7 += V4(-4.654e-04, 4.624e-03, -1.333e-01, 1.224e-02);
	r7 = clamp(r7, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(3, 1), vec4(r7));
}

//!DESC [CuNNy_8x32_DS_vk] -conv1
//!HOOK LUMA
//!COMPUTE 32 16 8 8
//!BIND in
//!BIND LUMA
//!SAVE conv1
//!WIDTH LUMA.w 4 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_spirv_intrinsics : require
spirv_instruction (extensions = ["SPV_KHR_integer_dot_product"], capabilities = [6019, 6018], id = 4450)
int dp4(int a, int b, spirv_literal int fmt);
#define D(r, s, a, b, c, d) r + ivec4(dp4(s, a, 0), dp4(s, b, 0), dp4(s, c, 0), dp4(s, d, 0))
shared int G[8][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(4, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			vec2 p;
			vec4 r, g, b, a;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(1, 1)) * in_pt;
			r = in_gather(p, 0);
			g = in_gather(p, 1);
			b = in_gather(p, 2);
			a = in_gather(p, 3);
			vec4 v0 = vec4(r.w, g.w, b.w, a.w) * 1.0000000e+00;
			vec4 v1 = vec4(r.z, g.z, b.z, a.z) * 1.0000000e+00;
			vec4 v2 = vec4(r.x, g.x, b.x, a.x) * 1.0000000e+00;
			vec4 v3 = vec4(r.y, g.y, b.y, a.y) * 1.0000000e+00;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(3, 1)) * in_pt;
			r = in_gather(p, 0);
			g = in_gather(p, 1);
			b = in_gather(p, 2);
			a = in_gather(p, 3);
			vec4 v4 = vec4(r.w, g.w, b.w, a.w) * 1.0000000e+00;
			vec4 v5 = vec4(r.z, g.z, b.z, a.z) * 1.0000000e+00;
			vec4 v6 = vec4(r.x, g.x, b.x, a.x) * 1.0000000e+00;
			vec4 v7 = vec4(r.y, g.y, b.y, a.y) * 1.0000000e+00;
			G[0][ay][ax] = int(packSnorm4x8(v0));
			G[1][ay][ax] = int(packSnorm4x8(v1));
			G[2][ay][ax] = int(packSnorm4x8(v2));
			G[3][ay][ax] = int(packSnorm4x8(v3));
			G[4][ay][ax] = int(packSnorm4x8(v4));
			G[5][ay][ax] = int(packSnorm4x8(v5));
			G[6][ay][ax] = int(packSnorm4x8(v6));
			G[7][ay][ax] = int(packSnorm4x8(v7));
		}
	}
	barrier();
	int s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;
	ivec4 r0, r1, r2, r3, r4, r5, r6, r7;
	vec4 f0, f1, f2, f3, f4, f5, f6, f7;
	r0 = ivec4(0); r1 = ivec4(0); r2 = ivec4(0); r3 = ivec4(0); r4 = ivec4(0); r5 = ivec4(0); r6 = ivec4(0); r7 = ivec4(0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2]; s1_0_0 = G[1][xy.y+0][xy.x+0];
	s1_0_1 = G[1][xy.y+0][xy.x+1]; s1_0_2 = G[1][xy.y+0][xy.x+2];
	s1_1_0 = G[1][xy.y+1][xy.x+0]; s1_1_1 = G[1][xy.y+1][xy.x+1];
	s1_1_2 = G[1][xy.y+1][xy.x+2]; s1_2_0 = G[1][xy.y+2][xy.x+0];
	s1_2_1 = G[1][xy.y+2][xy.x+1]; s1_2_2 = G[1][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xE42523F9, 0x0203F8EC, 0xFC0200EE, 0xFD09F3E1);
	r1 = D(r1, s0_0_0, 0x00011220, 0xFD06FEDE, 0x03E5DF05, 0x1622FDDD);
	r2 = D(r2, s0_0_0, 0xEFFD1DF1, 0x15041AD7, 0x0BF30FF1, 0x04F502F0);
	r3 = D(r3, s0_0_0, 0xE1FEF418, 0xF8F10F0B, 0x0821EC2F, 0x0410FEF3);
	r4 = D(r4, s0_0_0, 0xFBF1FB08, 0xF6FA0A16, 0x1900EAEB, 0xFCFFFCE1);
	r5 = D(r5, s0_0_0, 0xF10A0414, 0x27EE05EA, 0x08FD0226, 0xF70604EC);
	r6 = D(r6, s0_0_0, 0x0621F416, 0xEE021417, 0xFBFE0611, 0x1700E503);
	r7 = D(r7, s0_0_0, 0xFCFBFF1D, 0x1BF206EB, 0xFA18F90C, 0xC5F0FC00);
	r0 = D(r0, s0_0_1, 0xFD0E12FC, 0xF6FFEFFB, 0xFBFB0DF3, 0xDB0406E1);
	r1 = D(r1, s0_0_1, 0x1300CA08, 0xDEFF0B09, 0x2AF9F416, 0xECEBF1DC);
	r2 = D(r2, s0_0_1, 0x04F7FA04, 0xF7EA0CE1, 0xF4F3EDFD, 0x121DF0FA);
	r3 = D(r3, s0_0_1, 0xDA1ADBEE, 0x090509E1, 0xEDFDC525, 0xF9F615DE);
	r4 = D(r4, s0_0_1, 0xF51AFD04, 0x02F90CFD, 0xCDE434EE, 0x06F0E9F6);
	r5 = D(r5, s0_0_1, 0x0316D62C, 0xF8FEEDFC, 0xFFF1DB2C, 0x2427072D);
	r6 = D(r6, s0_0_1, 0xDBECF5FC, 0x0C12FF0E, 0x01F30F1E, 0x0C05EC15);
	r7 = D(r7, s0_0_1, 0x090D2116, 0xF8FE0EE8, 0x11F00804, 0x07150F12);
	r0 = D(r0, s0_0_2, 0x2B26FF04, 0x1AFE0026, 0xFCFC0810, 0x0AF2211D);
	r1 = D(r1, s0_0_2, 0x05FF00FF, 0xFF123321, 0xFDE81814, 0x030B481B);
	r2 = D(r2, s0_0_2, 0xF7F90514, 0x10EA0DEC, 0xF5F9E504, 0xFEF2D9EE);
	r3 = D(r3, s0_0_2, 0x03F703EB, 0xEB0B17FA, 0x02F2F7F9, 0x0006FEEA);
	r4 = D(r4, s0_0_2, 0xF306010D, 0xF70EF7FD, 0x0BFC21F5, 0x1008FF0B);
	r5 = D(r5, s0_0_2, 0x0BD9BB0E, 0x0307DBFC, 0xEDF6F305, 0xFD2FF607);
	r6 = D(r6, s0_0_2, 0x0506F30B, 0xFD15FA20, 0xFEF4F91C, 0x01F1FB00);
	r7 = D(r7, s0_0_2, 0xF7FAFC1B, 0xEBFCF1F7, 0xFBFFBAF9, 0x23F9DF12);
	r0 = D(r0, s0_1_0, 0xF7C115F5, 0xFB1002E2, 0xFFF404DF, 0x00121500);
	r1 = D(r1, s0_1_0, 0xEF04EB14, 0x1F03F8F4, 0xEDF900F5, 0xF1F1EDF8);
	r2 = D(r2, s0_1_0, 0x1610FF03, 0xF707E706, 0xF41DE8FB, 0xFF1BE411);
	r3 = D(r3, s0_1_0, 0xDAE5E016, 0x0D110AE7, 0xE9F6260B, 0x0CF304EE);
	r4 = D(r4, s0_1_0, 0xE4F21A03, 0xF0EC0207, 0x1110ED00, 0x0B0502EC);
	r5 = D(r5, s0_1_0, 0xFFE4FEF8, 0x0103F1F3, 0xFAF6F5EF, 0xDA2CE4FA);
	r6 = D(r6, s0_1_0, 0xD9B02BDE, 0xF1F5F1DC, 0x0405FE0C, 0xE2FA1C03);
	r7 = D(r7, s0_1_0, 0xE90AFA15, 0x010106F6, 0x0FFD1023, 0xF20815FC);
	r0 = D(r0, s0_1_1, 0x37DB04FB, 0xFEFEF607, 0x27210525, 0x37EA11FC);
	r1 = D(r1, s0_1_1, 0xCEFBF1E3, 0xEF0403F6, 0xEFF5E3EF, 0x2DFDC2FE);
	r2 = D(r2, s0_1_1, 0xFC1BF821, 0xF01FF00A, 0xF310FB17, 0xD516EF1F);
	r3 = D(r3, s0_1_1, 0x13AFD5F5, 0x0B1D0EE5, 0xFBFA1705, 0xFCE2EDDE);
	r4 = D(r4, s0_1_1, 0xDAEFB01D, 0x2414061E, 0x1638EA32, 0xEFF7D716);
	r5 = D(r5, s0_1_1, 0xD7E6FDEE, 0xF7C220F7, 0x22062CFC, 0xD7AFD4FA);
	r6 = D(r6, s0_1_1, 0x292E0A27, 0x1CED0FF6, 0x132FF117, 0x19FB0618);
	r7 = D(r7, s0_1_1, 0x17110022, 0x0EFDEA06, 0x001E0419, 0x2A03B922);
	r0 = D(r0, s0_1_2, 0x16241DF2, 0xFE105121, 0xFEFF000E, 0x1B1A201F);
	r1 = D(r1, s0_1_2, 0x0B0115EE, 0xFE0F0900, 0xF1171AFA, 0xD8FF0611);
	r2 = D(r2, s0_1_2, 0xE3100111, 0x05F63311, 0xF9FE3312, 0xEFF02606);
	r3 = D(r3, s0_1_2, 0x180D12EA, 0xF213FBF0, 0x0206EDE7, 0xF80302EE);
	r4 = D(r4, s0_1_2, 0x06E5EE08, 0x10F2EBCD, 0xDEE8BFF8, 0xFD080B0E);
	r5 = D(r5, s0_1_2, 0x1BF3E3FC, 0x0403FD08, 0xE6F608FC, 0xDF013DF0);
	r6 = D(r6, s0_1_2, 0xEE0C0012, 0x0AC8C416, 0xFEFEF50C, 0x12EFE4F2);
	r7 = D(r7, s0_1_2, 0xFAF6060D, 0x0D06EE05, 0xE3E2EADB, 0x01FC2D0A);
	r0 = D(r0, s0_2_0, 0xFB29D0EE, 0x0C07FDD8, 0xF3FFFEEE, 0xF713FAF6);
	r1 = D(r1, s0_2_0, 0x1D000611, 0xEFF01AE7, 0x210B050B, 0x0CC502F6);
	r2 = D(r2, s0_2_0, 0x0915F8DB, 0xFE04001E, 0x02FF0FED, 0x1C12F3FB);
	r3 = D(r3, s0_2_0, 0xFF1F3019, 0x1408EB1B, 0x25EFF2F9, 0x0D12F835);
	r4 = D(r4, s0_2_0, 0x02F914ED, 0xFBEFFC12, 0x000BFD09, 0xFAEF02F7);
	r5 = D(r5, s0_2_0, 0xF91113F5, 0xD61603EE, 0x0C1A11F0, 0x1A05F5F1);
	r6 = D(r6, s0_2_0, 0x21EBFEF3, 0xE50C17F4, 0x040609DB, 0xFBFBF5FD);
	r7 = D(r7, s0_2_0, 0x03040713, 0xFAFC0707, 0xF8FE13FE, 0x233906CB);
	r0 = D(r0, s0_2_1, 0xCE02F4F0, 0xE3EFE3F7, 0xEFF8E9F7, 0xE018EE01);
	r1 = D(r1, s0_2_1, 0xF70104FF, 0x13FC0321, 0x02270B04, 0x0C0C0A1F);
	r2 = D(r2, s0_2_1, 0x11DCC4F4, 0x0C2C0909, 0xFDF1F5FE, 0x24E8EF02);
	r3 = D(r3, s0_2_1, 0x27FF180B, 0xF1F0FC12, 0xE8D5BFF1, 0xF4FE2A27);
	r4 = D(r4, s0_2_1, 0x431109D9, 0xEA0F0EFF, 0xFDF10C09, 0xFDFBF909);
	r5 = D(r5, s0_2_1, 0x090721E3, 0x1C180416, 0xE800F3F1, 0x0BC3E40B);
	r6 = D(r6, s0_2_1, 0xD1FB1F07, 0xFEFEBBDE, 0xE8D6E6CE, 0xBE10E502);
	r7 = D(r7, s0_2_1, 0x04F0F91E, 0xFC090620, 0x08F1FC04, 0xF1F502ED);
	r0 = D(r0, s0_2_2, 0x2C19F5EE, 0xF7061219, 0x0DFDFC17, 0xE905E0FD);
	r1 = D(r1, s0_2_2, 0xFF0303E3, 0xFC07F904, 0xE1FCF7DB, 0xEA12F00F);
	r2 = D(r2, s0_2_2, 0x00FB1AF6, 0xEBC8FA15, 0x21FDEA03, 0x00D3F5FA);
	r3 = D(r3, s0_2_2, 0xF10A37FB, 0x09D5E41B, 0x1E1047E7, 0xF50F022A);
	r4 = D(r4, s0_2_2, 0x0F21FCFF, 0xF609FDEF, 0x13F2F2FC, 0x05F8F913);
	r5 = D(r5, s0_2_2, 0x061E21F9, 0xE50BCD11, 0x01FCFBEB, 0x102700FC);
	r6 = D(r6, s0_2_2, 0x13F4F1FC, 0x0CE8D607, 0x0C0616DE, 0x030E03DF);
	r7 = D(r7, s0_2_2, 0x0203080E, 0xFEFDFA17, 0xFB0A10E3, 0xCEDB00FB);
	r0 = D(r0, s1_0_0, 0x12A81215, 0x0FFB0D09, 0x0AFAF903, 0xE9FD0700);
	r1 = D(r1, s1_0_0, 0xFC0C04EC, 0xD1EA0B11, 0xF4FFD605, 0x09FA040E);
	r2 = D(r2, s1_0_0, 0xE0060309, 0x5410F4C9, 0xB5EE091C, 0xC325FBE9);
	r3 = D(r3, s1_0_0, 0xC4F5F519, 0xF2F6FBFB, 0xFD05DD2D, 0x10FA0105);
	r4 = D(r4, s1_0_0, 0xDE09EFF2, 0x040307FD, 0xF6F9FF08, 0x0CEC07FB);
	r5 = D(r5, s1_0_0, 0x3409FEFB, 0xBD1B070F, 0xED06F4F4, 0x06F2FE17);
	r6 = D(r6, s1_0_0, 0x81FBF200, 0xCFEA050E, 0x07FF0400, 0x10F2F909);
	r7 = D(r7, s1_0_0, 0xFBF2F904, 0x97FA81FC, 0xD1EF1C1B, 0xF8F80508);
	r0 = D(r0, s1_0_1, 0xFD390699, 0xEE091604, 0x2A0408E4, 0xEB04090C);
	r1 = D(r1, s1_0_1, 0xD607FEFA, 0x2808101E, 0xFD01D702, 0xFC39F824);
	r2 = D(r2, s1_0_1, 0x1A00FE22, 0x4908F2F3, 0x81190810, 0x2000F1F1);
	r3 = D(r3, s1_0_1, 0xE8F90C0E, 0x0407D530, 0x2809FF34, 0x1AF10703);
	r4 = D(r4, s1_0_1, 0xB806F0F2, 0xFFFAFE13, 0x810B2AFE, 0x81FAD9E4);
	r5 = D(r5, s1_0_1, 0x2C1129E2, 0x14FF0C18, 0xBAF4F6FD, 0x7F10F40D);
	r6 = D(r6, s1_0_1, 0xC1020410, 0x04E30D13, 0xFB00FE07, 0xA5250022);
	r7 = D(r7, s1_0_1, 0xD702F6F6, 0x191A81D0, 0x000EFB2B, 0x81E31C3F);
	r0 = D(r0, s1_0_2, 0xFF0A02FA, 0xDE15F92F, 0xFD0E00FF, 0x9A3916F2);
	r1 = D(r1, s1_0_2, 0x06F7FCF0, 0x0F0A0B0D, 0x1C0FD702, 0x13EDF225);
	r2 = D(r2, s1_0_2, 0x1001F922, 0xDBE6C519, 0x10EB0017, 0x32FCF3F7);
	r3 = D(r3, s1_0_2, 0xEA1E09EA, 0x02F5F1F9, 0x6216FFC0, 0x0505FE07);
	r4 = D(r4, s1_0_2, 0x8102F8EB, 0x000204FE, 0x01F9EBF4, 0xD9050CFF);
	r5 = D(r5, s1_0_2, 0x9D20EB81, 0xB80D080F, 0xEFE7F9FF, 0xCDD4F8E2);
	r6 = D(r6, s1_0_2, 0x0EF4020D, 0x250801F3, 0xFEF90403, 0xFEF601FB);
	r7 = D(r7, s1_0_2, 0xE4040AFD, 0x0BFFE00F, 0xBCF513FF, 0xE20A0C11);
	r0 = D(r0, s1_1_0, 0xC2202128, 0xE8F30505, 0x0C0C020A, 0xF5E314FC);
	r1 = D(r1, s1_1_0, 0xFCFB00EE, 0x0615EDF0, 0x0BFFDA01, 0xDCF5CDEA);
	r2 = D(r2, s1_1_0, 0x13DF1DF3, 0xBBF922E3, 0x031B0E06, 0x13F2FE01);
	r3 = D(r3, s1_1_0, 0x290FDA2B, 0x20432DFA, 0xBCEA0C08, 0xDC0008FF);
	r4 = D(r4, s1_1_0, 0xDF0417E8, 0xF40105FC, 0xF70DF801, 0xD114D0E3);
	r5 = D(r5, s1_1_0, 0x10F0E02C, 0x341407DF, 0xD5421C19, 0x0EEE030E);
	r6 = D(r6, s1_1_0, 0xCAFCF401, 0x39F82F04, 0xF700FBF5, 0x5526130C);
	r7 = D(r7, s1_1_0, 0x0A0A0808, 0xF405DCFF, 0x1304F0E3, 0x08E80513);
	r0 = D(r0, s1_1_1, 0xDAC4F539, 0xF3D4CE81, 0xFFCAFE81, 0x4BDCECFE);
	r1 = D(r1, s1_1_1, 0x191CEE40, 0x4721E7E5, 0xD100160C, 0x09ED81D7);
	r2 = D(r2, s1_1_1, 0xBA0E2EB5, 0x4F20F8B3, 0x1AF0F60F, 0x190CF02A);
	r3 = D(r3, s1_1_1, 0x2607F94A, 0x35F8E3DF, 0x272CD5F8, 0xE807E1F7);
	r4 = D(r4, s1_1_1, 0x010F3DCF, 0x06E5FEDB, 0x1ADED4CC, 0x30F1A7D3);
	r5 = D(r5, s1_1_1, 0xF6021205, 0x17E128F8, 0xFFEE08CC, 0x2265F6FC);
	r6 = D(r6, s1_1_1, 0x2EDB11FA, 0xF5E5CF09, 0xF00303F0, 0x0F81F881);
	r7 = D(r7, s1_1_1, 0x0F05FB32, 0x1506F10B, 0xD1F40B34, 0x2B1FECED);
	r0 = D(r0, s1_1_2, 0xB231052C, 0x130505F2, 0x03FA01F6, 0xCFD507AD);
	r1 = D(r1, s1_1_2, 0xF9FB0315, 0xE0FF03D1, 0x44FC0032, 0xD21B9EF6);
	r2 = D(r2, s1_1_2, 0x050D0E1D, 0xC1EF3B32, 0x1D090EA2, 0x130BD62D);
	r3 = D(r3, s1_1_2, 0xB00E140E, 0xFDFF021A, 0x50CEE1FC, 0xFE030908);
	r4 = D(r4, s1_1_2, 0x81EBD006, 0xF513124D, 0x0800DE22, 0x08E8F40A);
	r5 = D(r5, s1_1_2, 0xDDE5E0FC, 0x1ECC17EE, 0xFE0906FD, 0x0403DB16);
	r6 = D(r6, s1_1_2, 0x28F205F9, 0x1A14FB0E, 0xE6020101, 0x16000FF3);
	r7 = D(r7, s1_1_2, 0xF7F9FB04, 0xF5EFE810, 0x081314BD, 0xEFFAE2EE);
	r0 = D(r0, s1_2_0, 0xC896CC46, 0xF9FA1909, 0x050B0204, 0xD8EF0C14);
	r1 = D(r1, s1_2_0, 0xF7FAF6E8, 0xFD01FBF4, 0x120D0516, 0x3200F315);
	r2 = D(r2, s1_2_0, 0xFAED090D, 0xEF1009E5, 0x07F3EB19, 0xDCECFCFE);
	r3 = D(r3, s1_2_0, 0x0FE6150A, 0xF7D90623, 0xFAE0EFFC, 0x090608FE);
	r4 = D(r4, s1_2_0, 0x1801E41B, 0xF1F40007, 0x041400FD, 0xE710FC10);
	r5 = D(r5, s1_2_0, 0xF4E4FC1C, 0xF50DE7DD, 0xFDE6FFFB, 0xE5F30101);
	r6 = D(r6, s1_2_0, 0xF50316FC, 0xC30DF6CC, 0xFB0601FB, 0xE13C14DC);
	r7 = D(r7, s1_2_0, 0xFD0AF9F1, 0xF304FD01, 0xDC1618D8, 0xDFEA1233);
	r0 = D(r0, s1_2_1, 0xD73C0C81, 0xF2FDF7E8, 0x0C05FFF4, 0xFC0D1516);
	r1 = D(r1, s1_2_1, 0xFDF908EF, 0x0EEEFB08, 0x33EB18FF, 0xEAF2F316);
	r2 = D(r2, s1_2_1, 0xF5F1CCB3, 0x1C090705, 0x1414EE2E, 0x21FBE1EA);
	r3 = D(r3, s1_2_1, 0x16E42BF4, 0x10FF3716, 0x342CF4ED, 0xF406E5F6);
	r4 = D(r4, s1_2_1, 0x230BED47, 0x0C0BFE0B, 0xFD02F609, 0xF40F00FE);
	r5 = D(r5, s1_2_1, 0xE6D5242F, 0xB1D1DAC3, 0xEBEFF8FC, 0xE705ED03);
	r6 = D(r6, s1_2_1, 0xEF23FEF3, 0x0B19D511, 0x0C071B1C, 0x0A291034);
	r7 = D(r7, s1_2_1, 0xFD0504EA, 0x00E8F317, 0x050F1404, 0x121C1031);
	r0 = D(r0, s1_2_2, 0xD213F423, 0xFF141112, 0x0209FE09, 0xEF25EEAA);
	r1 = D(r1, s1_2_2, 0xFDF706F6, 0x17E715E0, 0x0D17F204, 0x080C0505);
	r2 = D(r2, s1_2_2, 0x24181107, 0xEBFAFC3D, 0x0DE8FDD1, 0xF3FA1809);
	r3 = D(r3, s1_2_2, 0x1A0806B5, 0xF7010AEB, 0xCEE5ED25, 0x0CFB1CF7);
	r4 = D(r4, s1_2_2, 0xB3CAD21B, 0xFE0803F7, 0xF1050801, 0xF3FA0417);
	r5 = D(r5, s1_2_2, 0xF01EFB02, 0x30FAD31D, 0x05FD05ED, 0x0BBFE5ED);
	r6 = D(r6, s1_2_2, 0xC8FC08FC, 0x12D6AD02, 0x06F405FF, 0x08EA251C);
	r7 = D(r7, s1_2_2, 0x08F52201, 0xFB0D0504, 0xCCED11ED, 0xB7C3CC46);
	s0_0_0 = G[2][xy.y+0][xy.x+0]; s0_0_1 = G[2][xy.y+0][xy.x+1];
	s0_0_2 = G[2][xy.y+0][xy.x+2]; s0_1_0 = G[2][xy.y+1][xy.x+0];
	s0_1_1 = G[2][xy.y+1][xy.x+1]; s0_1_2 = G[2][xy.y+1][xy.x+2];
	s0_2_0 = G[2][xy.y+2][xy.x+0]; s0_2_1 = G[2][xy.y+2][xy.x+1];
	s0_2_2 = G[2][xy.y+2][xy.x+2]; s1_0_0 = G[3][xy.y+0][xy.x+0];
	s1_0_1 = G[3][xy.y+0][xy.x+1]; s1_0_2 = G[3][xy.y+0][xy.x+2];
	s1_1_0 = G[3][xy.y+1][xy.x+0]; s1_1_1 = G[3][xy.y+1][xy.x+1];
	s1_1_2 = G[3][xy.y+1][xy.x+2]; s1_2_0 = G[3][xy.y+2][xy.x+0];
	s1_2_1 = G[3][xy.y+2][xy.x+1]; s1_2_2 = G[3][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x21FD06DB, 0x0F04E103, 0xFCFA0916, 0xEC001704);
	r1 = D(r1, s0_0_0, 0x0BFBE0FE, 0x03FBFFCF, 0xFDF21753, 0xBAD020F6);
	r2 = D(r2, s0_0_0, 0xF40013E8, 0x38FDFBE4, 0x0B080BEA, 0x060DFF0B);
	r3 = D(r3, s0_0_0, 0x08EFA2B2, 0x0CF7F1E1, 0x00D60CEF, 0x01FB04F8);
	r4 = D(r4, s0_0_0, 0xC423ECDF, 0xFB150FF3, 0x10F1EDF7, 0xFF061313);
	r5 = D(r5, s0_0_0, 0x21F0C213, 0xFEF3E4E6, 0x1C04FCE6, 0xF4080B0B);
	r6 = D(r6, s0_0_0, 0x27FAFF54, 0xFF07FA2D, 0x01FD05F7, 0x0F09F81D);
	r7 = D(r7, s0_0_0, 0xFDFCEE03, 0xFC04F39C, 0xF7F81FFD, 0xEF270DE1);
	r0 = D(r0, s0_0_1, 0xECEADB1A, 0xE9F0E00A, 0x00F3F007, 0xEF1C02C4);
	r1 = D(r1, s0_0_1, 0xF9110421, 0xFC0714F2, 0x190D1642, 0x2D0704F1);
	r2 = D(r2, s0_0_1, 0x1B18FE06, 0xE8101F37, 0x1516E305, 0x05EBEE06);
	r3 = D(r3, s0_0_1, 0x10EDF31F, 0xF037DC5D, 0x27E30725, 0x0005FFFF);
	r4 = D(r4, s0_0_1, 0xA101D978, 0x06FEFCFA, 0xE9FAF4E5, 0x0DF8F0EC);
	r5 = D(r5, s0_0_1, 0xE215EC09, 0x1BF8F2E6, 0x24180BFB, 0xDAECFC09);
	r6 = D(r6, s0_0_1, 0xFDDF0881, 0xCE12F5EC, 0x04060504, 0x02EBC8A4);
	r7 = D(r7, s0_0_1, 0xFB031A08, 0x0DFA0B27, 0x022001FD, 0xF4F9E314);
	r0 = D(r0, s0_0_2, 0xFAF824BC, 0x020100FB, 0x0205FA05, 0x11FAE3F2);
	r1 = D(r1, s0_0_2, 0xF50205FC, 0x0CE708ED, 0xFFF5F073, 0x1502F426);
	r2 = D(r2, s0_0_2, 0x090300F7, 0xA2F515E1, 0x16F5FBD0, 0xED1712F4);
	r3 = D(r3, s0_0_2, 0xDED803B2, 0x0B01DFEF, 0xEEF2AFE0, 0xF5F80A00);
	r4 = D(r4, s0_0_2, 0xED1ADE06, 0xF4030A08, 0x0BFF101E, 0xFB07032B);
	r5 = D(r5, s0_0_2, 0x2D2306FB, 0x0D05F6B4, 0x0107092B, 0x0AFEECFA);
	r6 = D(r6, s0_0_2, 0xFEE519CF, 0xFA022CF5, 0x05FF0704, 0x0F16F9E4);
	r7 = D(r7, s0_0_2, 0x0D06F214, 0xF707048D, 0xE906F1C9, 0xCAFA070D);
	r0 = D(r0, s0_1_0, 0x06EF18F1, 0xF01339F4, 0xF612740A, 0xEEED1BE2);
	r1 = D(r1, s0_1_0, 0x07F7D5F7, 0xEEF0A7D8, 0x0BE4AFEE, 0xEA0501F9);
	r2 = D(r2, s0_1_0, 0xDAEAF7E3, 0xC0E31621, 0x05E02735, 0xFD149730);
	r3 = D(r3, s0_1_0, 0x0B3510AC, 0x0EE90E41, 0x0C2538D3, 0xFDF80008);
	r4 = D(r4, s0_1_0, 0x02F0C1E7, 0x140EF4E5, 0xF3E72E18, 0xE5D3EC96);
	r5 = D(r5, s0_1_0, 0x1FF2C201, 0x0F29050D, 0x1E111AF9, 0xF51217FA);
	r6 = D(r6, s0_1_0, 0xF11835F9, 0xF504FBB0, 0x02FB1006, 0xC817114F);
	r7 = D(r7, s0_1_0, 0x010A1EEC, 0xEEE6ED7F, 0xE6F281F9, 0xC207EF05);
	r0 = D(r0, s0_1_1, 0xE116E4EF, 0x1F2A01F2, 0x08060BF8, 0x18EC20D3);
	r1 = D(r1, s0_1_1, 0x15ECEB10, 0xDAC4E057, 0x380DF524, 0x31D1EB9F);
	r2 = D(r2, s0_1_1, 0xCFE8E806, 0xCED43B17, 0x0306E752, 0x063FFCDC);
	r3 = D(r3, s0_1_1, 0xEE1FCA49, 0xFC083807, 0xE003F5FA, 0x000F0408);
	r4 = D(r4, s0_1_1, 0x0F28DE10, 0xFBF4C8F5, 0xCEDA04DF, 0xB5EAECF3);
	r5 = D(r5, s0_1_1, 0xDC190732, 0x10F20FA9, 0x03EFF23D, 0x56F504D0);
	r6 = D(r6, s0_1_1, 0xD504F700, 0x250019EE, 0x0FEEFAF2, 0xEAFAE126);
	r7 = D(r7, s0_1_1, 0x1F18F8E2, 0x67D60681, 0xC9FEC319, 0x5E02E3F0);
	r0 = D(r0, s0_1_2, 0x0BF002FA, 0x01000010, 0xFE040709, 0x00F033FF);
	r1 = D(r1, s0_1_2, 0x1104FAF0, 0xEFEC1B44, 0x21E20113, 0xD0F5F7BE);
	r2 = D(r2, s0_1_2, 0x9CEC0B05, 0xE9C7E489, 0xF31302AD, 0xD1F918D4);
	r3 = D(r3, s0_1_2, 0xABBD052C, 0xF9FC1F0B, 0x432AB2BD, 0x0307F3F5);
	r4 = D(r4, s0_1_2, 0x0FF4D381, 0xFDFDF1DE, 0x07EB0296, 0xD8FD0D81);
	r5 = D(r5, s0_1_2, 0x1CD9EF07, 0xEA1AEA18, 0xF6EB0FF3, 0xD6F30518);
	r6 = D(r6, s0_1_2, 0x0AF8F42B, 0x2DFA0810, 0xECECFA02, 0xD8CA1681);
	r7 = D(r7, s0_1_2, 0x00F9139F, 0x2701FA81, 0xFCD1A806, 0xDCE833E1);
	r0 = D(r0, s0_2_0, 0xDB0D2E1F, 0xF5F91300, 0x161515F2, 0xE6FFF63F);
	r1 = D(r1, s0_2_0, 0x01ECFA02, 0xFBD2F7F9, 0x4616F1BB, 0xD313FA19);
	r2 = D(r2, s0_2_0, 0x2BEC1054, 0x9F17CCC7, 0xC2FEBB17, 0x0AF31217);
	r3 = D(r3, s0_2_0, 0xED1819FC, 0xFA07F7D3, 0x000F0D1F, 0x0E07E4E2);
	r4 = D(r4, s0_2_0, 0x39FB3834, 0xFF030601, 0xDA23E0EF, 0xF02B082D);
	r5 = D(r5, s0_2_0, 0x0815FA01, 0xDB221813, 0xF2DE11FC, 0xE324F70A);
	r6 = D(r6, s0_2_0, 0x01F00418, 0xE018D611, 0x0501FF03, 0x323EBEF8);
	r7 = D(r7, s0_2_0, 0x0602EC0A, 0x1C010A1F, 0xDEE016FF, 0xD714F600);
	r0 = D(r0, s0_2_1, 0x5339C1AD, 0x2BD8DB07, 0xFDEDEAEE, 0x19E4F01B);
	r1 = D(r1, s0_2_1, 0xF60C1501, 0xF9F9F4F9, 0x10100CB1, 0x1316F508);
	r2 = D(r2, s0_2_1, 0xD3FFEBEA, 0xB203E712, 0xA6DDD6EA, 0xD61EE0EA);
	r3 = D(r3, s0_2_1, 0x1511011A, 0x25F0DA81, 0x5309FC4C, 0x49F40681);
	r4 = D(r4, s0_2_1, 0x81440746, 0xF409FD16, 0x01FAF7F8, 0xF702EBDE);
	r5 = D(r5, s0_2_1, 0x04FC0D3D, 0x050818FA, 0xF8F208E3, 0x26F7F7DB);
	r6 = D(r6, s0_2_1, 0x1809F643, 0xDAFBFCB3, 0x051FFDFC, 0xF6D0DBF7);
	r7 = D(r7, s0_2_1, 0x00F512F8, 0x07FD0A02, 0x39F5E1CF, 0x01190C11);
	r0 = D(r0, s0_2_2, 0x1E16FD01, 0x150EFB0F, 0x06FCFCFD, 0x1522D874);
	r1 = D(r1, s0_2_2, 0xF102030A, 0xE9EDFA1B, 0xAA0CEB7F, 0x361820F1);
	r2 = D(r2, s0_2_2, 0xFAF70EDC, 0x0940DAFB, 0xF2EC0CE8, 0x22E20BD1);
	r3 = D(r3, s0_2_2, 0xC7DC3928, 0xF8E5EC93, 0xC907E5C6, 0xBEFB0A23);
	r4 = D(r4, s0_2_2, 0x1A1A13D5, 0x0506070B, 0x0106F7F5, 0x2A16F705);
	r5 = D(r5, s0_2_2, 0xEFDA1D8D, 0x20E706D1, 0xFAFE0610, 0x20110933);
	r6 = D(r6, s0_2_2, 0x11F00D2D, 0xB331C4B8, 0xE20A05E1, 0xBAFAFE1A);
	r7 = D(r7, s0_2_2, 0xF6F400F1, 0xFFF80605, 0x2AB20BEA, 0xC2D00CDB);
	r0 = D(r0, s1_0_0, 0xB60C2930, 0xF8FB0612, 0xFCF90113, 0x170D1EEA);
	r1 = D(r1, s1_0_0, 0x020600FC, 0x03020EFC, 0x2004E8DE, 0xF3EA020C);
	r2 = D(r2, s1_0_0, 0x08110AF1, 0xFA1D1412, 0xF906FE42, 0xFBE60BE0);
	r3 = D(r3, s1_0_0, 0x31F0F8F1, 0x121DF7D3, 0x0DF2D98A, 0x01020909);
	r4 = D(r4, s1_0_0, 0x150CF229, 0x0205020C, 0xF5F00BFA, 0x0400093B);
	r5 = D(r5, s1_0_0, 0x0908CE1D, 0x3CE803DF, 0xE00B01D1, 0xED0102D4);
	r6 = D(r6, s1_0_0, 0xF5212302, 0xFF10E8D3, 0x0304FDFD, 0xF00520B8);
	r7 = D(r7, s1_0_0, 0x09F7080F, 0xE40C0D28, 0x03FAFD1D, 0xE6F8D8C3);
	r0 = D(r0, s1_0_1, 0x14DFBD03, 0x0F1905F7, 0xED0103F5, 0x0CFC0BDF);
	r1 = D(r1, s1_0_1, 0xF302F90D, 0x0C082DF3, 0xFFDDE613, 0x20F9FC08);
	r2 = D(r2, s1_0_1, 0xDDF6080C, 0x2A05FC0B, 0xFEE31715, 0xE3010A34);
	r3 = D(r3, s1_0_1, 0x1CD20FFB, 0xB208F621, 0xE5CDFD2D, 0x02070503);
	r4 = D(r4, s1_0_1, 0x2414C9E5, 0x1C01F202, 0x130BFB21, 0x1D10FBFF);
	r5 = D(r5, s1_0_1, 0xC7C3DF2E, 0x260DCF21, 0xD0F5F507, 0xE4EFF107);
	r6 = D(r6, s1_0_1, 0x9DEB2013, 0xE0E5FA13, 0x00FC0900, 0xE9F71819);
	r7 = D(r7, s1_0_1, 0x120C05E7, 0x11270112, 0x0E022517, 0x24FAF402);
	r0 = D(r0, s1_0_2, 0x1A0223D1, 0xEEFC0C06, 0x09F605FC, 0xFF1AF805);
	r1 = D(r1, s1_0_2, 0x1902FFFD, 0xEEFE1001, 0x0022D40C, 0x30DDEF20);
	r2 = D(r2, s1_0_2, 0xE8FE060B, 0xCBF2231A, 0x0F1606E8, 0x040A05F4);
	r3 = D(r3, s1_0_2, 0xF6DE13DF, 0xDB0D22ED, 0x0002E20E, 0xFE0003FF);
	r4 = D(r4, s1_0_2, 0x1A0EE036, 0x1C06FE04, 0x2022F706, 0xFF1105F5);
	r5 = D(r5, s1_0_2, 0xBFEAD218, 0xE0F20FCC, 0x0F0300FC, 0xC8FFFA12);
	r6 = D(r6, s1_0_2, 0xF9FF080F, 0x0A041705, 0x07FF00FC, 0x1410F5E9);
	r7 = D(r7, s1_0_2, 0xFB0106FE, 0xEDFE090A, 0x0621E10A, 0x0CDCEEEB);
	r0 = D(r0, s1_1_0, 0xDBF5C51F, 0x000CF306, 0xF8F5FC0E, 0xEFFFF4D6);
	r1 = D(r1, s1_1_0, 0x13160ED1, 0x1110ED25, 0x03F02DF3, 0xFDE8E3BF);
	r2 = D(r2, s1_1_0, 0x07F6E3E2, 0x39FBE0EB, 0x2306D488, 0x24FDEC02);
	r3 = D(r3, s1_1_0, 0xD5EC02DF, 0xE2F0E713, 0x44D807F9, 0x0408F4FE);
	r4 = D(r4, s1_1_0, 0xFEF13009, 0xFBFBF90E, 0x0DF2F917, 0x0FFD0BD1);
	r5 = D(r5, s1_1_0, 0x01E40AE5, 0xF601FF06, 0x1E1DEE28, 0xF8F30AF9);
	r6 = D(r6, s1_1_0, 0x1303EFDF, 0x101E03D2, 0xFC01F1EE, 0x2623D9E5);
	r7 = D(r7, s1_1_0, 0xF708F1F7, 0x0D12F9FD, 0x060AEBD2, 0xF2E2F61B);
	r0 = D(r0, s1_1_1, 0x111A2B25, 0x19E0EF3A, 0xF807FB13, 0xD90016C7);
	r1 = D(r1, s1_1_1, 0x11F4FCE8, 0x18DDF231, 0x1FCCEC81, 0x25A927F4);
	r2 = D(r2, s1_1_1, 0x0FE0FAF3, 0x18BAF70C, 0xE1BB017F, 0x1CDF0419);
	r3 = D(r3, s1_1_1, 0xE7D8F204, 0x06F00CD0, 0x3B0C09EA, 0x2020EEF8);
	r4 = D(r4, s1_1_1, 0xBA190226, 0x06FE1BD7, 0xD603150A, 0xE418030E);
	r5 = D(r5, s1_1_1, 0xDCFD2FFD, 0x960FECDF, 0x0705E6FB, 0x152D24DB);
	r6 = D(r6, s1_1_1, 0x1908E5E3, 0x0E100428, 0xD7F11008, 0x17010413);
	r7 = D(r7, s1_1_1, 0xDDF9070D, 0x14FB0FF1, 0x1DF209EC, 0xEDE6F8FD);
	r0 = D(r0, s1_1_2, 0x060413DE, 0x17F606F3, 0xF300F805, 0xEC18F71E);
	r1 = D(r1, s1_1_2, 0x040C13FC, 0xD809F712, 0x2D061307, 0x01D90508);
	r2 = D(r2, s1_1_2, 0x0EF80B05, 0xF1E8F4D9, 0x0AC50E23, 0xE7E50FF0);
	r3 = D(r3, s1_1_2, 0x18F827F1, 0x04050FD7, 0xE1BC0D1B, 0xF3F101FA);
	r4 = D(r4, s1_1_2, 0x0320FA27, 0x080F06FD, 0x09EEF7FB, 0xE6060703);
	r5 = D(r5, s1_1_2, 0x10120213, 0xF002ED12, 0x0C1004FD, 0xE8FB30C9);
	r6 = D(r6, s1_1_2, 0xE7F9E41B, 0xEE22F71C, 0xE800030B, 0xE011ED23);
	r7 = D(r7, s1_1_2, 0x0E07FAFE, 0x0EEFFC01, 0x0714F4F6, 0x18D40302);
	r0 = D(r0, s1_2_0, 0xD9173CD8, 0xEF030810, 0x03FC09FB, 0x1BFA0EE6);
	r1 = D(r1, s1_2_0, 0xFF03FE09, 0xF7E5200B, 0xFC082222, 0x0809F541);
	r2 = D(r2, s1_2_0, 0xF104274F, 0x0A0716EC, 0xF3052103, 0xFA03000E);
	r3 = D(r3, s1_2_0, 0xE203BA6C, 0x1A050C00, 0xF910F202, 0xED09F3D3);
	r4 = D(r4, s1_2_0, 0xFC152DEE, 0xFC02F9F9, 0x01F9051D, 0x1900040D);
	r5 = D(r5, s1_2_0, 0xF112E700, 0xD92D57C9, 0xF5051404, 0xF210DB23);
	r6 = D(r6, s1_2_0, 0x06F8F0EF, 0x201B15CA, 0x03031816, 0x10021EC0);
	r7 = D(r7, s1_2_0, 0xF90F0F08, 0x05F0F5FD, 0xFAF4FB33, 0x0D1E0AE7);
	r0 = D(r0, s1_2_1, 0x030C08CF, 0xFDF0F3F6, 0x0904FFF5, 0xF5280931);
	r1 = D(r1, s1_2_1, 0xF2FD0008, 0xECFBF900, 0xE0ED1BE3, 0xD4FBF204);
	r2 = D(r2, s1_2_1, 0xDCD7F10B, 0xDDCBEDE8, 0xFFF819A6, 0xFE05EF3B);
	r3 = D(r3, s1_2_1, 0x030831F9, 0x1801ED1D, 0xD7FF20F8, 0x102D0D0F);
	r4 = D(r4, s1_2_1, 0xF61EE581, 0xF302F80D, 0xF407FEFC, 0x02FAF115);
	r5 = D(r5, s1_2_1, 0x0BF82FDF, 0xF21005D1, 0xEC07FB0A, 0xF5F715E3);
	r6 = D(r6, s1_2_1, 0xF90DF906, 0x0C09FED6, 0x14E6D8F3, 0xF00DF103);
	r7 = D(r7, s1_2_1, 0x0307E8ED, 0xFB050509, 0xF2E22E24, 0xC817E7F7);
	r0 = D(r0, s1_2_2, 0x00F9F1FB, 0x000501FD, 0xFCFD0203, 0x0D1AFCF7);
	r1 = D(r1, s1_2_2, 0x0101F803, 0x1CEC01FD, 0x0CFCF825, 0xF22CFCE2);
	r2 = D(r2, s1_2_2, 0x24F905FC, 0x1A2612E4, 0x1BEAF808, 0xFAF0FEF2);
	r3 = D(r3, s1_2_2, 0x11F1E716, 0x25EDDA2C, 0x81A803F9, 0xF4FD04FC);
	r4 = D(r4, s1_2_2, 0xE30600BF, 0xF908FF08, 0x06F8F406, 0xFFF903FD);
	r5 = D(r5, s1_2_2, 0x16EC22F4, 0x18EB08F2, 0x0604FFFB, 0x1212DEEA);
	r6 = D(r6, s1_2_2, 0x07FA0B0B, 0xE606FCE4, 0x05F602FD, 0x0305FC07);
	r7 = D(r7, s1_2_2, 0x11FA0409, 0x0401FDFA, 0xEE08E82D, 0xEF001CE2);
	s0_0_0 = G[4][xy.y+0][xy.x+0]; s0_0_1 = G[4][xy.y+0][xy.x+1];
	s0_0_2 = G[4][xy.y+0][xy.x+2]; s0_1_0 = G[4][xy.y+1][xy.x+0];
	s0_1_1 = G[4][xy.y+1][xy.x+1]; s0_1_2 = G[4][xy.y+1][xy.x+2];
	s0_2_0 = G[4][xy.y+2][xy.x+0]; s0_2_1 = G[4][xy.y+2][xy.x+1];
	s0_2_2 = G[4][xy.y+2][xy.x+2]; s1_0_0 = G[5][xy.y+0][xy.x+0];
	s1_0_1 = G[5][xy.y+0][xy.x+1]; s1_0_2 = G[5][xy.y+0][xy.x+2];
	s1_1_0 = G[5][xy.y+1][xy.x+0]; s1_1_1 = G[5][xy.y+1][xy.x+1];
	s1_1_2 = G[5][xy.y+1][xy.x+2]; s1_2_0 = G[5][xy.y+2][xy.x+0];
	s1_2_1 = G[5][xy.y+2][xy.x+1]; s1_2_2 = G[5][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xD6075B1A, 0x38010214, 0x0BEE0405, 0xE6E1F220);
	r1 = D(r1, s0_0_0, 0x04FC02F0, 0x03FB0502, 0x10C581CF, 0xFAE2BE13);
	r2 = D(r2, s0_0_0, 0xE2052FCC, 0xE0D3DB2A, 0xF3F5EB18, 0x0600F8EB);
	r3 = D(r3, s0_0_0, 0x08FFA226, 0xD7FCEEE8, 0xF9273824, 0xFAF7F513);
	r4 = D(r4, s0_0_0, 0xE3F92506, 0xF904F3FF, 0x1B100B10, 0xF515FC13);
	r5 = D(r5, s0_0_0, 0xF114DEC6, 0x2E0C45F8, 0x010EFFD9, 0xEEDDFC35);
	r6 = D(r6, s0_0_0, 0x12B40F10, 0xEC2CE032, 0xFEFC06EF, 0x25D00CD2);
	r7 = D(r7, s0_0_0, 0xFEDF04D9, 0xEB09251F, 0x1DF902E9, 0x01C8D6CC);
	r0 = D(r0, s0_0_1, 0x9A2B1F3D, 0xF0FAF8FA, 0xEB09FAF2, 0x0107EAF7);
	r1 = D(r1, s0_0_1, 0xFEF10400, 0xE5FB11DD, 0x1140E3C9, 0x1936EFEE);
	r2 = D(r2, s0_0_1, 0x0807AFF3, 0xD239B932, 0xFD0706E8, 0xF9BBC410);
	r3 = D(r3, s0_0_1, 0x52335810, 0xCEF7EC12, 0x24F58115, 0xFC09080B);
	r4 = D(r4, s0_0_1, 0x03D9240B, 0x1011F107, 0xFFD3070A, 0xDBF703FF);
	r5 = D(r5, s0_0_1, 0xF1E6E9F1, 0xFE14F8EF, 0xE6F622FC, 0xDDF92CF4);
	r6 = D(r6, s0_0_1, 0x0A033925, 0x084DF719, 0xF508FDFB, 0x0A2722E7);
	r7 = D(r7, s0_0_1, 0x0FBB0FF1, 0xB821F81E, 0xF4E2DB1D, 0xEDE81427);
	r0 = D(r0, s0_0_2, 0xB6D1F516, 0xD2E2DFFA, 0x12F9FDFB, 0x06D6F2EF);
	r1 = D(r1, s0_0_2, 0xEF00F101, 0xC2021BF8, 0xB0F2AFEA, 0xC81C2B03);
	r2 = D(r2, s0_0_2, 0x4BFFFCF6, 0x032A2514, 0x1DEFEA15, 0x2909FEFA);
	r3 = D(r3, s0_0_2, 0x2AD2CD09, 0xEE29F5F2, 0xDC0B810F, 0xF501EFF8);
	r4 = D(r4, s0_0_2, 0xD50C2FE5, 0x0115F702, 0x8300F7F9, 0x2EF703F8);
	r5 = D(r5, s0_0_2, 0xC904E5FB, 0xDBF82604, 0xF5010706, 0x81E6F019);
	r6 = D(r6, s0_0_2, 0x240FFF11, 0x17132B01, 0x0DFE0602, 0x16E51414);
	r7 = D(r7, s0_0_2, 0x17EA2CFC, 0x040EEE09, 0x0B05E612, 0x09D78505);
	r0 = D(r0, s0_1_0, 0xEC0D81D0, 0x14120C26, 0x070203F4, 0xE50D18D4);
	r1 = D(r1, s0_1_0, 0xF915010B, 0x16ECE87F, 0x010D9A06, 0xD0FCD145);
	r2 = D(r2, s0_1_0, 0x00E008B6, 0xE3D5E181, 0xE432280D, 0x190A3107);
	r3 = D(r3, s0_1_0, 0x2EE07F0F, 0xFBF34F0A, 0x0E1820FB, 0xFFFDFAF4);
	r4 = D(r4, s0_1_0, 0xDCE5CDD1, 0x050AFAC3, 0x0AE4080A, 0xFF152DDC);
	r5 = D(r5, s0_1_0, 0x1CE79002, 0x32132726, 0xFB250BED, 0x07F2D77F);
	r6 = D(r6, s0_1_0, 0x05B83FF7, 0x09DB489D, 0xFEF901FB, 0xEA25B266);
	r7 = D(r7, s0_1_0, 0xF7CBDC81, 0x08FB06F6, 0x160105D0, 0x170AC036);
	r0 = D(r0, s0_1_1, 0x2321C790, 0x11F903E0, 0x2C0E11FF, 0xEB0B1105);
	r1 = D(r1, s0_1_1, 0xE4150502, 0x204D070A, 0x55FC4FCD, 0xFEFBEEF8);
	r2 = D(r2, s0_1_1, 0xC74C81CE, 0xDC0F35E0, 0xB603EBF1, 0xAD1D25E4);
	r3 = D(r3, s0_1_1, 0x40F48118, 0xFEF0F4DA, 0xB7DFD4FA, 0xFDF32415);
	r4 = D(r4, s0_1_1, 0xD1C487FB, 0x1AE9251B, 0xF215FA02, 0xE3FCF812);
	r5 = D(r5, s0_1_1, 0x1821980A, 0xF8F08116, 0xEE003C11, 0xF061FC27);
	r6 = D(r6, s0_1_1, 0xEDB57F13, 0xD3A3B726, 0xE6F607EE, 0xE1F17FF2);
	r7 = D(r7, s0_1_1, 0xEDBC1C07, 0xBCF2E0FA, 0xF62C012D, 0xE219B241);
	r0 = D(r0, s0_1_2, 0xFBD17FBF, 0xE220FEFB, 0xF4FB0DFD, 0x11227C1D);
	r1 = D(r1, s0_1_2, 0x15FF09FC, 0xFBE8CE00, 0xE0D2BB07, 0xB6F8F7D8);
	r2 = D(r2, s0_1_2, 0x82F625F6, 0x20FC23B2, 0xF9F60AF1, 0xA40C0AF9);
	r3 = D(r3, s0_1_2, 0xDE24E3EB, 0x36EB1913, 0x46A38DF3, 0x100204FA);
	r4 = D(r4, s0_1_2, 0x31F4BDC0, 0x03DA1B04, 0x2B19FB01, 0x0D1616FE);
	r5 = D(r5, s0_1_2, 0x0B173F21, 0xD331FCEA, 0xEF01F7F6, 0xD8F812E5);
	r6 = D(r6, s0_1_2, 0xFB600D11, 0xF2F9D9F0, 0x4F05F903, 0x05FBAAEB);
	r7 = D(r7, s0_1_2, 0xE9F0D815, 0xDB0A07FD, 0xDF15FB16, 0x7F3E81F8);
	r0 = D(r0, s0_2_0, 0x1C09EED5, 0x111AFF0C, 0x00FA070F, 0xE0E1A6EE);
	r1 = D(r1, s0_2_0, 0x03FDF7E2, 0x12F1ED1D, 0x03099894, 0x0105FE81);
	r2 = D(r2, s0_2_0, 0x0FDBC103, 0x02E0EC81, 0x1EFE201D, 0x18202648);
	r3 = D(r3, s0_2_0, 0x141AB3E4, 0xE7D232EA, 0x001EF6FA, 0x091A04E4);
	r4 = D(r4, s0_2_0, 0xEDF402D6, 0x0206F4F5, 0x0602F9FB, 0x0CEB0907);
	r5 = D(r5, s0_2_0, 0xFAFA2011, 0xF3DFEC2F, 0xFD0004DF, 0xF9DBE546);
	r6 = D(r6, s0_2_0, 0xFBF4E4F9, 0xF4E92E23, 0xF800FF07, 0xDEF2460B);
	r7 = D(r7, s0_2_0, 0xFC04FDE2, 0x17F9F1E4, 0x1C14FEF0, 0xF2EFE5FC);
	r0 = D(r0, s0_2_1, 0x1C287734, 0x20E704FF, 0xFB10F200, 0xEBFDECDB);
	r1 = D(r1, s0_2_1, 0x0BF20712, 0x1BE5F008, 0xF62451B9, 0xFEEBF0FF);
	r2 = D(r2, s0_2_1, 0x1003D0F4, 0x03101633, 0x05EECFCC, 0x030C2032);
	r3 = D(r3, s0_2_1, 0xE705D10C, 0x092A312A, 0x81EB69E1, 0xEDEEFDE6);
	r4 = D(r4, s0_2_1, 0xE1658128, 0x0CF51303, 0x021B19FC, 0x00F70DF3);
	r5 = D(r5, s0_2_1, 0xE91A4614, 0x1AB572BD, 0xFDF33100, 0x12F70E0F);
	r6 = D(r6, s0_2_1, 0xEE2021DC, 0xD11B9214, 0xF60AFF1E, 0x08218108);
	r7 = D(r7, s0_2_1, 0x05EECAF3, 0xF7F9FD0D, 0x2FC9F409, 0xD2306B34);
	r0 = D(r0, s0_2_2, 0x05CC81FF, 0x03FFDBFE, 0x0DF9FC02, 0xF50395EA);
	r1 = D(r1, s0_2_2, 0x0301FB01, 0x1417DEF4, 0x16DA641A, 0xE3DFB622);
	r2 = D(r2, s0_2_2, 0x21F8D8ED, 0xF0FE73F0, 0x120BFA22, 0x10E4E407);
	r3 = D(r3, s0_2_2, 0xDCEE2609, 0xFD01EB00, 0x3D4BB7AA, 0xFA011900);
	r4 = D(r4, s0_2_2, 0x1CFF4F27, 0x03100EF8, 0x0FFAFBFE, 0x04F2F5FF);
	r5 = D(r5, s0_2_2, 0xBEC6C3FA, 0x22E5E7E5, 0xF3FCFDFC, 0xF923CDFB);
	r6 = D(r6, s0_2_2, 0x05151303, 0xE2EB2FBB, 0x0AFF0903, 0x15EB2110);
	r7 = D(r7, s0_2_2, 0x0E017F08, 0x0EEE0CFA, 0x1B08F604, 0xD7D637AF);
	r0 = D(r0, s1_0_0, 0x16F8C5FA, 0xF600FAE8, 0x01FE0013, 0xFC0BFA01);
	r1 = D(r1, s1_0_0, 0x05F606E4, 0xD6F34523, 0x2318D1D5, 0x2B2722BB);
	r2 = D(r2, s1_0_0, 0x16E2E707, 0x291209EB, 0xFBF30903, 0x0207DA1B);
	r3 = D(r3, s1_0_0, 0xEC200A02, 0xFA07E70C, 0x280ECE28, 0x0FFDEDF6);
	r4 = D(r4, s1_0_0, 0xE0F8F1E8, 0xFAFBFE04, 0x101604DD, 0xFB01E014);
	r5 = D(r5, s1_0_0, 0x15EF010F, 0x3BDD03F4, 0xFA01F8E8, 0xC802F410);
	r6 = D(r6, s1_0_0, 0x22EE03E1, 0x05FB02F6, 0xF2FD030F, 0x1714EDFD);
	r7 = D(r7, s1_0_0, 0xF50625F8, 0x0BA2CBF8, 0xE7F4041E, 0xE7CF1612);
	r0 = D(r0, s1_0_1, 0xFA1EE2EB, 0x00E6FED9, 0x06000DFD, 0xF8DFBEFB);
	r1 = D(r1, s1_0_1, 0xECFFEE12, 0xDFF80019, 0xEB1647DB, 0xDCCC380A);
	r2 = D(r2, s1_0_1, 0xFE0DE6FA, 0x1E1CE536, 0xF9EDDBF0, 0x03061EB9);
	r3 = D(r3, s1_0_1, 0x35B542F9, 0xF1279E11, 0x46FE40DB, 0xFFFAF519);
	r4 = D(r4, s1_0_1, 0x1210DEB5, 0xFB06E31F, 0xFD9D170C, 0x0516EB0E);
	r5 = D(r5, s1_0_1, 0xF3D51508, 0x1DDAE13D, 0xF6140906, 0x0F3104FE);
	r6 = D(r6, s1_0_1, 0xE5050804, 0x0DF0C9F1, 0x0307FEEC, 0x0B15E0D5);
	r7 = D(r7, s1_0_1, 0x0C1AF4F8, 0x03B0DEF7, 0xF40CE7ED, 0xEDD1FB1C);
	r0 = D(r0, s1_0_2, 0xF9E8FE0B, 0x0711F0F9, 0xFF040801, 0xF1D13CEB);
	r1 = D(r1, s1_0_2, 0x050AFD06, 0xF4F20E0F, 0x0701CADB, 0x293034F7);
	r2 = D(r2, s1_0_2, 0xFEFDF704, 0x0F04F4ED, 0x04020B01, 0x0D2BDF11);
	r3 = D(r3, s1_0_2, 0xFCF2F2F4, 0x08FD1205, 0xDB260209, 0x0307FF04);
	r4 = D(r4, s1_0_2, 0x070C1EC9, 0x13060611, 0xF7F7F30C, 0x05081509);
	r5 = D(r5, s1_0_2, 0xEE0C180A, 0x0A1AF8E4, 0x0803EE0D, 0xF11EEEF7);
	r6 = D(r6, s1_0_2, 0xE4191C20, 0xDB02FA37, 0x02FBFC04, 0x0A08FE01);
	r7 = D(r7, s1_0_2, 0xF9E81707, 0x0731EA12, 0xFED9D4F2, 0x1E02EDA6);
	r0 = D(r0, s1_1_0, 0x15F134DC, 0xE709E3E8, 0xE500DF06, 0xC200EDF1);
	r1 = D(r1, s1_1_0, 0x2BFF0D0C, 0x3C1E04F3, 0x17F41FE4, 0x23F701AE);
	r2 = D(r2, s1_1_0, 0xF9E125ED, 0x02FBDAE6, 0x02080923, 0x1FEEB002);
	r3 = D(r3, s1_1_0, 0x1E30FFEE, 0x11FF1AC3, 0xCAEB24C4, 0xFBEEFFF6);
	r4 = D(r4, s1_1_0, 0xF1F2F60C, 0x0B0A04FA, 0xC217DE04, 0xABEEDA09);
	r5 = D(r5, s1_1_0, 0xE7381C14, 0xFC147FBE, 0x22F8301B, 0xD428F00C);
	r6 = D(r6, s1_1_0, 0xF5FA1F1D, 0x2EF7D82E, 0xFCF706F9, 0x8101023C);
	r7 = D(r7, s1_1_0, 0x16F6DB22, 0xF407CBE2, 0xEDED09E5, 0xECF31311);
	r0 = D(r0, s1_1_1, 0x16E8DA03, 0xFCEB15F7, 0xF6F8FE04, 0xEEE8BDFA);
	r1 = D(r1, s1_1_1, 0xF6ED02FD, 0x10E7D042, 0xE1F478FA, 0xF8FAFE03);
	r2 = D(r2, s1_1_1, 0x07EB230D, 0xFAFDDDFD, 0x27151E18, 0xFFEF021C);
	r3 = D(r3, s1_1_1, 0xC2CDC3A2, 0x1CC5C14A, 0xFD0B659D, 0xEF1EF4E3);
	r4 = D(r4, s1_1_1, 0xED082EB7, 0x1CFCFD05, 0x3AF6BD14, 0x1EE41509);
	r5 = D(r5, s1_1_1, 0xE91433CE, 0x03D9AA2E, 0xFBF6040F, 0x9DF1FF02);
	r6 = D(r6, s1_1_1, 0x00E82FFA, 0x0E0AE5D2, 0x2E27170A, 0x56DBE318);
	r7 = D(r7, s1_1_1, 0x250F11FB, 0x111E1901, 0x17F2150B, 0x1228FB15);
	r0 = D(r0, s1_1_2, 0xDCDEE0E4, 0x1423EE12, 0xFA060B00, 0xDA052001);
	r1 = D(r1, s1_1_2, 0xFCFEFD05, 0xD702011C, 0xFEC3F6EE, 0xFDE8C3EA);
	r2 = D(r2, s1_1_2, 0xFDEBF00D, 0xFEF43003, 0x20E0ED00, 0x0926EE30);
	r3 = D(r3, s1_1_2, 0x010AE3CE, 0xF114172A, 0x0913BF02, 0xFEFF02FD);
	r4 = D(r4, s1_1_2, 0x362305D2, 0xF3F019F9, 0xF3FFDD0F, 0xFE0C0B10);
	r5 = D(r5, s1_1_2, 0x012546E3, 0xD61C62F5, 0xF8E9F80D, 0x110A0D0E);
	r6 = D(r6, s1_1_2, 0xE1ECF510, 0x02052311, 0x06F6F104, 0x06F41DE9);
	r7 = D(r7, s1_1_2, 0xFC08E8F8, 0xEA16FCFD, 0x2005F7F3, 0xCC1814F5);
	r0 = D(r0, s1_2_0, 0x2CE9261F, 0xF3F81B05, 0xF701F6FC, 0xFCED0012);
	r1 = D(r1, s1_2_0, 0x0F0D1605, 0xCD13FEFE, 0xEECDEDD7, 0x022803C9);
	r2 = D(r2, s1_2_0, 0xCC16EDE1, 0xCBE32E1E, 0x2002D4F6, 0x090081FA);
	r3 = D(r3, s1_2_0, 0x0FDC34E1, 0xD3DFDD15, 0x25DBEF06, 0x24F2FC02);
	r4 = D(r4, s1_2_0, 0xF8072E29, 0xF902FA07, 0xED00F9FD, 0xEC15EB05);
	r5 = D(r5, s1_2_0, 0x00E1EF1F, 0xC403F2F0, 0xFC06F905, 0xF1D511F5);
	r6 = D(r6, s1_2_0, 0xFBF44416, 0xE40A814E, 0xF6EC160E, 0xEAC22CFA);
	r7 = D(r7, s1_2_0, 0xEBFB34FB, 0x0D18E704, 0x031311F1, 0x0BBB1420);
	r0 = D(r0, s1_2_1, 0xFED40CF9, 0xEA030808, 0x06F10302, 0x0FE926F9);
	r1 = D(r1, s1_2_1, 0xEF090504, 0x0DDE0F03, 0x1B2CF4EF, 0x222825F6);
	r2 = D(r2, s1_2_1, 0xE7339C03, 0xF3E9F10A, 0xBC137F08, 0xF409DB04);
	r3 = D(r3, s1_2_1, 0x02D30AD8, 0x0FE13110, 0xDB2781E0, 0x00E6FA0C);
	r4 = D(r4, s1_2_1, 0xFB041709, 0xF301E504, 0xFC1502FF, 0x270DF915);
	r5 = D(r5, s1_2_1, 0x12E3F302, 0x0ACF1531, 0xFE05080C, 0x0D11F90F);
	r6 = D(r6, s1_2_1, 0xEB0C26FB, 0xE40FDEFF, 0xE11DF6FD, 0x06F3ECDF);
	r7 = D(r7, s1_2_1, 0x0E0F00FD, 0xF8F101FE, 0xF008BCF5, 0xE4283EB8);
	r0 = D(r0, s1_2_2, 0xECF30BEB, 0xF9F61C0A, 0xFE0402FB, 0x1ADCF8EA);
	r1 = D(r1, s1_2_2, 0x04FFFA07, 0x0AF2F508, 0x0EE80CFA, 0xE7D3BEF9);
	r2 = D(r2, s1_2_2, 0xEEE1E30B, 0x2D081DFE, 0x1CEC0AF9, 0xF7FFC817);
	r3 = D(r3, s1_2_2, 0x04D4CA00, 0xFC11FB06, 0xFDDB810C, 0xFEF30903);
	r4 = D(r4, s1_2_2, 0x051C1909, 0xFAF9FF07, 0x11FBF1FA, 0x150CF902);
	r5 = D(r5, s1_2_2, 0xF3020706, 0xF60D2C18, 0xFBF90204, 0x0F03BC07);
	r6 = D(r6, s1_2_2, 0xFFF8EE10, 0x1543C3E2, 0xF9FEFA05, 0x0AF8FF0C);
	r7 = D(r7, s1_2_2, 0xE6E91E03, 0x07F50705, 0xD8F14DFD, 0x23B26FF6);
	s0_0_0 = G[6][xy.y+0][xy.x+0]; s0_0_1 = G[6][xy.y+0][xy.x+1];
	s0_0_2 = G[6][xy.y+0][xy.x+2]; s0_1_0 = G[6][xy.y+1][xy.x+0];
	s0_1_1 = G[6][xy.y+1][xy.x+1]; s0_1_2 = G[6][xy.y+1][xy.x+2];
	s0_2_0 = G[6][xy.y+2][xy.x+0]; s0_2_1 = G[6][xy.y+2][xy.x+1];
	s0_2_2 = G[6][xy.y+2][xy.x+2]; s1_0_0 = G[7][xy.y+0][xy.x+0];
	s1_0_1 = G[7][xy.y+0][xy.x+1]; s1_0_2 = G[7][xy.y+0][xy.x+2];
	s1_1_0 = G[7][xy.y+1][xy.x+0]; s1_1_1 = G[7][xy.y+1][xy.x+1];
	s1_1_2 = G[7][xy.y+1][xy.x+2]; s1_2_0 = G[7][xy.y+2][xy.x+0];
	s1_2_1 = G[7][xy.y+2][xy.x+1]; s1_2_2 = G[7][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x1EF2DAEC, 0xEF05F5F9, 0x0202F4FC, 0x01020DF2);
	r1 = D(r1, s0_0_0, 0xFDFCF6FF, 0xDE03FEF5, 0xFF0FF0E9, 0xE60AE30A);
	r2 = D(r2, s0_0_0, 0x08FA25FB, 0xE3161E20, 0x07FF0E14, 0x14FAFFF0);
	r3 = D(r3, s0_0_0, 0x25E88106, 0x11120701, 0x0F2B07E5, 0xFE080A07);
	r4 = D(r4, s0_0_0, 0xFD0B1ECD, 0xF8FEFE0B, 0xFE0B0401, 0x06F9F7FE);
	r5 = D(r5, s0_0_0, 0x0D0F04CA, 0x0B0612DB, 0xFFF60615, 0x0DFE1305);
	r6 = D(r6, s0_0_0, 0xE50703FA, 0x0F24F234, 0x02FF04FE, 0xFFF001E9);
	r7 = D(r7, s0_0_0, 0xF3F9070C, 0xFF0509F4, 0xFE1703F3, 0x0C080AE6);
	r0 = D(r0, s0_0_1, 0xF417EA11, 0x08FC01FB, 0x07FD0501, 0xFBF517F7);
	r1 = D(r1, s0_0_1, 0x030A00FF, 0xFBF808F7, 0xE32BC127, 0x090725DC);
	r2 = D(r2, s0_0_1, 0x150DF5FE, 0x1A19F3DD, 0x071008F6, 0x03DB1BEF);
	r3 = D(r3, s0_0_1, 0x041A81BD, 0x07F318FE, 0xCD1E2DD9, 0x04FF0DF6);
	r4 = D(r4, s0_0_1, 0x0CBAF91E, 0x0400FC08, 0xF811FAFA, 0x0901150C);
	r5 = D(r5, s0_0_1, 0xF5110506, 0xF713F6FC, 0x05030BFF, 0xEF05090F);
	r6 = D(r6, s0_0_1, 0xEE12D00A, 0x0B010911, 0xFC060105, 0x0FF301CC);
	r7 = D(r7, s0_0_1, 0xEBF9F414, 0x0817F2F4, 0xFBF80110, 0x180FF9EB);
	r0 = D(r0, s0_0_2, 0xFB050BBF, 0x0C03D9F4, 0xFC02FF00, 0xF707DB05);
	r1 = D(r1, s0_0_2, 0x0102F606, 0x0A040AF3, 0xDB01E700, 0xE0121B1E);
	r2 = D(r2, s0_0_2, 0x0507F4FB, 0xFBF3EC0A, 0x1AF209FF, 0x0C02FDF0);
	r3 = D(r3, s0_0_2, 0xE013F831, 0xFFF5ECEA, 0x1A81EC07, 0x0206F505);
	r4 = D(r4, s0_0_2, 0xC11DAEE7, 0xFEFBF2FB, 0xFD0703F5, 0xEF051301);
	r5 = D(r5, s0_0_2, 0x23120EED, 0x00FBFE1C, 0x07FF050A, 0xF91B16F2);
	r6 = D(r6, s0_0_2, 0x020614F4, 0xF204EFD7, 0x0901FF03, 0xF60FF511);
	r7 = D(r7, s0_0_2, 0xF9001C03, 0x090E0408, 0x1F1CCC07, 0x04281515);
	r0 = D(r0, s0_1_0, 0xFEDE0209, 0x110EF90E, 0x0307FDF3, 0x1700FCF4);
	r1 = D(r1, s0_1_0, 0xFCFF0B01, 0xF519F71E, 0x19F723F4, 0xD1FD2613);
	r2 = D(r2, s0_1_0, 0x041817F2, 0x14424628, 0x2012F9D3, 0x34FCF4F3);
	r3 = D(r3, s0_1_0, 0xCD02FA36, 0xC605D0F2, 0x1EFF0683, 0xF1070B00);
	r4 = D(r4, s0_1_0, 0x1611D981, 0x0AEC0107, 0xE712FBFB, 0xF61AF8DE);
	r5 = D(r5, s0_1_0, 0x0AFAE144, 0x074D1D3D, 0xFB1A1244, 0xD6EEF01C);
	r6 = D(r6, s0_1_0, 0x151713EC, 0x0DE2F820, 0x08FFFCFB, 0xF841DF1A);
	r7 = D(r7, s0_1_0, 0x0A0709FC, 0xEEF850E5, 0x06F90306, 0x19E6BBE4);
	r0 = D(r0, s0_1_1, 0xE3B6C41B, 0x06E9EBF9, 0x06020D09, 0x1F0C07E2);
	r1 = D(r1, s0_1_1, 0x01F0EE04, 0x200C34BE, 0x20ABD539, 0x411EF0BD);
	r2 = D(r2, s0_1_1, 0xF73B0332, 0xF2B6D61C, 0x062CCD13, 0x02F5ED05);
	r3 = D(r3, s0_1_1, 0xDF3BF9BE, 0x150EE4D9, 0xA41ACFC0, 0x0103E10E);
	r4 = D(r4, s0_1_1, 0x131DD4EC, 0x15F3F6EF, 0x3D1514D4, 0xFC13FFDB);
	r5 = D(r5, s0_1_1, 0x8502D181, 0x0AFDC007, 0x091607E7, 0x99E13F7B);
	r6 = D(r6, s0_1_1, 0xDFD4BDEE, 0xF4FCF925, 0xFF060612, 0x1A5B20EF);
	r7 = D(r7, s0_1_1, 0x2BF1EB16, 0xE4FED2F4, 0x030CF922, 0xD6470551);
	r0 = D(r0, s0_1_2, 0x38D9032A, 0x10FA17F6, 0xFA06FB05, 0xE433200D);
	r1 = D(r1, s0_1_2, 0x07F807ED, 0x00132223, 0xD00843F2, 0xF3F3D24F);
	r2 = D(r2, s0_1_2, 0x0EE7DFFC, 0xED05E410, 0xF7FDF2E5, 0xECFE12FF);
	r3 = D(r3, s0_1_2, 0xF4021C41, 0xFC3C19ED, 0xF4E4D8E7, 0xEBEE1A05);
	r4 = D(r4, s0_1_2, 0xD02D0800, 0xFAF500F2, 0xEC0EFD22, 0xF5F601F6);
	r5 = D(r5, s0_1_2, 0xF8D4EEF1, 0xBCFFDCD6, 0x0AF6F108, 0x1411DE26);
	r6 = D(r6, s0_1_2, 0x11DF47C9, 0x21FF0B02, 0x0D000308, 0x04F6B2F2);
	r7 = D(r7, s0_1_2, 0xFF131405, 0xEDEE0300, 0xEB20EFE6, 0x0F06FE10);
	r0 = D(r0, s0_2_0, 0xE62CE81F, 0x09030204, 0xFCED02FF, 0x00ED23EC);
	r1 = D(r1, s0_2_0, 0xF996050F, 0xE0A2ED13, 0x3519E4D3, 0xF3C61B2C);
	r2 = D(r2, s0_2_0, 0xE7F7EEFA, 0x14DC1C01, 0xEFFB47D9, 0x297FECFB);
	r3 = D(r3, s0_2_0, 0x0753FFFF, 0xE9B4D414, 0x11D527BC, 0x141003FE);
	r4 = D(r4, s0_2_0, 0xE919D2F7, 0xFF090100, 0xF3E20C23, 0x18FCF10B);
	r5 = D(r5, s0_2_0, 0x1F0CF5FC, 0xDFD8A87F, 0x3019EDF5, 0xEEC30F20);
	r6 = D(r6, s0_2_0, 0x07DB0EE1, 0x260EEDFE, 0x08F0040B, 0x09A7C203);
	r7 = D(r7, s0_2_0, 0xFEF80712, 0x1A27F012, 0xFE420AF9, 0x1B01B5D9);
	r0 = D(r0, s0_2_1, 0xF6067FF9, 0xF4BE282A, 0xFFEFF6FF, 0x0BE43E1F);
	r1 = D(r1, s0_2_1, 0x0E1B180B, 0x2FE00301, 0x060DD3CD, 0x4B02FCF4);
	r2 = D(r2, s0_2_1, 0xD633FEEA, 0x0695ED8F, 0x05F7DC1C, 0x89FD2EB3);
	r3 = D(r3, s0_2_1, 0x083A00FD, 0xF7D58123, 0xD8F0BE81, 0x23EACB17);
	r4 = D(r4, s0_2_1, 0x0E13CA0E, 0xF019FBF9, 0x01D40B32, 0xE72106C9);
	r5 = D(r5, s0_2_1, 0xEC11F9E8, 0x360BE625, 0xDD3A0306, 0x01FA072E);
	r6 = D(r6, s0_2_1, 0xE92F3CED, 0xC0F30027, 0xC006FB03, 0xD90DA381);
	r7 = D(r7, s0_2_1, 0xF143FFF0, 0x15051CF5, 0x08911AC6, 0x82669958);
	r0 = D(r0, s0_2_2, 0xF706F014, 0xF70DFBF1, 0x04F907FE, 0xE2FA3724);
	r1 = D(r1, s0_2_2, 0xFC06F4FE, 0xF3EA1E1E, 0x0520E1D3, 0xEDFFE2CF);
	r2 = D(r2, s0_2_2, 0x0401FD1F, 0x0A2112CB, 0xDDF717F4, 0xF2EFDACD);
	r3 = D(r3, s0_2_2, 0x17F10AF8, 0x1119A60D, 0x5A7FD2E2, 0xF307FFFE);
	r4 = D(r4, s0_2_2, 0x1A61EE94, 0x0415F0F8, 0xFA07F904, 0x07F5E6F6);
	r5 = D(r5, s0_2_2, 0x121401D3, 0x0930D924, 0xF8F30109, 0x09212509);
	r6 = D(r6, s0_2_2, 0x17E4F9EB, 0xD6E2BC43, 0x0109FA02, 0xEBEE1F12);
	r7 = D(r7, s0_2_2, 0x0A0A02FD, 0x00000DF8, 0x137FF3E7, 0xE9C12701);
	r0 = D(r0, s1_0_0, 0x07A5D42C, 0x0A04E910, 0xF9FFFAF8, 0x12F1FF00);
	r1 = D(r1, s1_0_0, 0x03FC09F2, 0x0F070BF7, 0x21C91AE2, 0xF007061B);
	r2 = D(r2, s1_0_0, 0x0D1302F0, 0x22010281, 0xE9E6D4E1, 0xE2020D32);
	r3 = D(r3, s1_0_0, 0x010FF206, 0x010EE9D8, 0xFB1C0A05, 0x07F801FF);
	r4 = D(r4, s1_0_0, 0x0E1CFDF0, 0xF606FFFF, 0x0AF1F420, 0x0F09DAD5);
	r5 = D(r5, s1_0_0, 0xEDF70905, 0xDF2FFFE9, 0xF9031817, 0xE2DAFF1D);
	r6 = D(r6, s1_0_0, 0x11FF1CCA, 0xEED2003B, 0xFAFD0408, 0x1E20EC0C);
	r7 = D(r7, s1_0_0, 0xF6F003FA, 0xE2EEC6EE, 0x0909E628, 0xF8C228E2);
	r0 = D(r0, s1_0_1, 0x06EFF041, 0xFAEAF502, 0x05FD08F6, 0x2534030A);
	r1 = D(r1, s1_0_1, 0x02F60B01, 0xECD100F6, 0x2FF01F00, 0xFAFC38FE);
	r2 = D(r2, s1_0_1, 0x200D02CF, 0xF0CDEB27, 0x15F8EE2E, 0x430AFEEB);
	r3 = D(r3, s1_0_1, 0xE4060BEE, 0xDBECEDFB, 0x08040CF4, 0xFDFEF8FE);
	r4 = D(r4, s1_0_1, 0xF200030F, 0xF602F025, 0xADEFE8ED, 0xE0F0F3FB);
	r5 = D(r5, s1_0_1, 0x15D5F002, 0xDDFDEBCA, 0xE80C0201, 0xC9F92CF6);
	r6 = D(r6, s1_0_1, 0xCCE717D5, 0x0224FEF8, 0xF6FC04F9, 0xCD11F63B);
	r7 = D(r7, s1_0_1, 0x12020BF7, 0xA4DBF9D8, 0x1005FCEA, 0xF22EF105);
	r0 = D(r0, s1_0_2, 0x1BD80C04, 0x0203F514, 0xF6030B00, 0x0BE8171C);
	r1 = D(r1, s1_0_2, 0x1709FB00, 0xF4190F0B, 0x211E0616, 0xC51BFEF2);
	r2 = D(r2, s1_0_2, 0x03141108, 0xA5F20416, 0x0CF7F819, 0xC910ED1E);
	r3 = D(r3, s1_0_2, 0x081D25F3, 0x1C00EDDC, 0xE1ED092A, 0x0205FD02);
	r4 = D(r4, s1_0_2, 0xADF0EB26, 0x0A17EE0E, 0xBBF400FA, 0x0906F6FE);
	r5 = D(r5, s1_0_2, 0x07D1EEDA, 0xF2E803E5, 0x07F20800, 0xF7D60407);
	r6 = D(r6, s1_0_2, 0xDBD501E5, 0xF7120706, 0xF9060004, 0xFF11F8F0);
	r7 = D(r7, s1_0_2, 0x04FA05EF, 0xE8E904EA, 0xFC00FD2A, 0x04C41903);
	r0 = D(r0, s1_1_0, 0x10A70311, 0x0E08FA03, 0xF3FAFD01, 0xFAD90120);
	r1 = D(r1, s1_1_0, 0x1B0C3000, 0x0B02F505, 0xE724F5D9, 0x18D61CF5);
	r2 = D(r2, s1_1_0, 0xE0F8EFF1, 0x0602B1FC, 0x1717A4FD, 0xFBDC0E1A);
	r3 = D(r3, s1_1_0, 0x2CF8F6FA, 0x150FDF09, 0x0D03EB2E, 0x0A06FCFC);
	r4 = D(r4, s1_1_0, 0x170C0508, 0x0A040103, 0x14F60100, 0xD2F581B0);
	r5 = D(r5, s1_1_0, 0xFA13ECFE, 0x2A170EEF, 0x0A0DFD12, 0xFFEFF217);
	r6 = D(r6, s1_1_0, 0x090712D4, 0xEEEF15F9, 0xFB000B05, 0xDFDDB417);
	r7 = D(r7, s1_1_0, 0xF90B0409, 0x120C0FFA, 0xE21B0904, 0xEA2EE0F1);
	r0 = D(r0, s1_1_1, 0x105AEADB, 0xE4F5E3D7, 0xF6FB10F0, 0xEA20F920);
	r1 = D(r1, s1_1_1, 0x08FE1316, 0x0C0019CA, 0xD824E94F, 0x09EBF3ED);
	r2 = D(r2, s1_1_1, 0xDFE5CD02, 0x09EA00B5, 0x062381B9, 0xF31CEA09);
	r3 = D(r3, s1_1_1, 0xD9F504DD, 0xECFCDA22, 0xE200D62B, 0xD7FD01EA);
	r4 = D(r4, s1_1_1, 0x06F3C2EF, 0xFDEAF006, 0x03E3E5E4, 0x0407EA18);
	r5 = D(r5, s1_1_1, 0x0C0B1AFE, 0xBA40182F, 0xD00BFDFA, 0xF62CE116);
	r6 = D(r6, s1_1_1, 0x00B1192F, 0x0ADF1222, 0x1D1002EC, 0xE2DFCD30);
	r7 = D(r7, s1_1_1, 0x051AF205, 0x34200903, 0x1101E2D5, 0x3626FEFB);
	r0 = D(r0, s1_1_2, 0x1A3A29A5, 0x161DFB22, 0x0704FA01, 0xCF0DEF12);
	r1 = D(r1, s1_1_2, 0xE701FD04, 0x150A0707, 0xEC11E0C5, 0x16F00F1A);
	r2 = D(r2, s1_1_2, 0xEC3E0603, 0x0228E005, 0xD202DE05, 0x1A1F1EC7);
	r3 = D(r3, s1_1_2, 0x0BDF0808, 0xF9D81706, 0xFE0C10C7, 0x11F61203);
	r4 = D(r4, s1_1_2, 0xF1C9F3B1, 0x03E902F6, 0x462F12ED, 0xF60AF40F);
	r5 = D(r5, s1_1_2, 0xDE2F0CF0, 0xB7D234DF, 0xF7FD020B, 0x1216024C);
	r6 = D(r6, s1_1_2, 0x0CE50E1F, 0xDDF01100, 0x1E0AFBF5, 0x16F7DDF3);
	r7 = D(r7, s1_1_2, 0x1A180705, 0x1F160807, 0x0AF8E41E, 0xC4C60515);
	r0 = D(r0, s1_2_0, 0x02C3EA20, 0xEFFBF8FB, 0x02FDFCFA, 0x1200F416);
	r1 = D(r1, s1_2_0, 0xF607010C, 0x06F900F2, 0xF3EDFFED, 0xFD1B0AFA);
	r2 = D(r2, s1_2_0, 0x05EE0EDE, 0x0712FCE7, 0xFBFADDFA, 0x03FC01F7);
	r3 = D(r3, s1_2_0, 0x120EF9D3, 0x03BCF41E, 0x0402F50D, 0x02120703);
	r4 = D(r4, s1_2_0, 0x250600FE, 0x04010304, 0xFF0BFCFD, 0xFAF1E502);
	r5 = D(r5, s1_2_0, 0xF8F2F40D, 0x2DFA0EED, 0xF7FD0AFE, 0x120BFFFC);
	r6 = D(r6, s1_2_0, 0xFB3303F8, 0xFD25CF28, 0xF4000BFF, 0x30F7E403);
	r7 = D(r7, s1_2_0, 0x0AF30004, 0xF4F80A06, 0xDBE2DE17, 0xEE14DFEB);
	r0 = D(r0, s1_2_1, 0x1454FA24, 0x08FEE60E, 0x0B0FFF09, 0xFFF008FD);
	r1 = D(r1, s1_2_1, 0xF2F5FAF3, 0x0A1308F3, 0xD711F214, 0xDC021AF4);
	r2 = D(r2, s1_2_1, 0xFFBE0A13, 0x270325E7, 0x1EF9D908, 0x08FBDCE7);
	r3 = D(r3, s1_2_1, 0xD3FADFF6, 0xF11F24F5, 0x0BEBEDDA, 0x09140512);
	r4 = D(r4, s1_2_1, 0x111B2813, 0x00EF00F2, 0xF706000F, 0xFAFE07F9);
	r5 = D(r5, s1_2_1, 0x15000405, 0xDCBCFE0F, 0xFAEF0206, 0x12240609);
	r6 = D(r6, s1_2_1, 0x1C1CF6EA, 0x18E503EC, 0x00FB0100, 0x0A0DDED5);
	r7 = D(r7, s1_2_1, 0xF80002FE, 0x0511EF0B, 0xE6FCE904, 0x370100D4);
	r0 = D(r0, s1_2_2, 0x2920F1DD, 0x160203D9, 0xF9FF0307, 0x2207E11E);
	r1 = D(r1, s1_2_2, 0x0803FFF9, 0xFE040507, 0x15D7F5F0, 0x1C1902F5);
	r2 = D(r2, s1_2_2, 0x08FC0DE4, 0xE7070F25, 0x19FAF9FC, 0x28DA1CE4);
	r3 = D(r3, s1_2_2, 0x1CE5E72C, 0xE4D1020F, 0xF5DC0D38, 0xF7EBF9FD);
	r4 = D(r4, s1_2_2, 0xFBF0E6DB, 0x060BFD0D, 0x04FEFEFA, 0xFF1701FD);
	r5 = D(r5, s1_2_2, 0xF72C050D, 0x34D0E3E9, 0x0EF90104, 0x1B180727);
	r6 = D(r6, s1_2_2, 0x0B070BED, 0xED0005D2, 0xF6EF0809, 0xE3050107);
	r7 = D(r7, s1_2_2, 0xEAFE02F2, 0x0DFB02FD, 0x18F800DF, 0x64F4FBAB);
	f0 = vec4(r0) * 6.2000124e-05;
	f0 += vec4(-3.199e-02, 2.425e-02, -6.684e-03, -1.086e-02);
	f0 = clamp(f0, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 0), f0);
	f1 = vec4(r1) * 6.2000124e-05;
	f1 += vec4(9.610e-03, 4.163e-02, 3.608e-02, -1.320e-03);
	f1 = clamp(f1, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 0), f1);
	f2 = vec4(r2) * 6.2000124e-05;
	f2 += vec4(4.043e-02, -1.198e-02, 5.008e-02, 1.257e-02);
	f2 = clamp(f2, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 1), f2);
	f3 = vec4(r3) * 6.2000124e-05;
	f3 += vec4(2.644e-02, 6.924e-02, 2.104e-02, 1.180e-02);
	f3 = clamp(f3, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 1), f3);
	f4 = vec4(r4) * 6.2000124e-05;
	f4 += vec4(-4.436e-03, 1.247e-02, 3.475e-02, 5.387e-02);
	f4 = clamp(f4, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 0), f4);
	f5 = vec4(r5) * 6.2000124e-05;
	f5 += vec4(7.300e-02, 6.117e-02, 2.379e-02, 1.483e-03);
	f5 = clamp(f5, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 0), f5);
	f6 = vec4(r6) * 6.2000124e-05;
	f6 += vec4(-5.115e-02, 2.348e-02, 1.041e-02, 4.340e-02);
	f6 = clamp(f6, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 1), f6);
	f7 = vec4(r7) * 6.2000124e-05;
	f7 += vec4(-5.205e-01, 3.263e-02, 5.263e-02, 1.247e-02);
	f7 = clamp(f7, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 1), f7);
}

//!DESC [CuNNy_8x32_DS_vk] -conv2
//!HOOK LUMA
//!COMPUTE 32 16 8 8
//!BIND conv1
//!BIND LUMA
//!SAVE conv2
//!WIDTH LUMA.w 4 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_spirv_intrinsics : require
spirv_instruction (extensions = ["SPV_KHR_integer_dot_product"], capabilities = [6019, 6018], id = 4450)
int dp4(int a, int b, spirv_literal int fmt);
#define D(r, s, a, b, c, d) r + ivec4(dp4(s, a, 0), dp4(s, b, 0), dp4(s, c, 0), dp4(s, d, 0))
shared int G[8][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(4, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			vec2 p;
			vec4 r, g, b, a;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(1, 1)) * conv1_pt;
			r = conv1_gather(p, 0);
			g = conv1_gather(p, 1);
			b = conv1_gather(p, 2);
			a = conv1_gather(p, 3);
			vec4 v0 = vec4(r.w, g.w, b.w, a.w) * 1.0000000e+00;
			vec4 v1 = vec4(r.z, g.z, b.z, a.z) * 1.0000000e+00;
			vec4 v2 = vec4(r.x, g.x, b.x, a.x) * 1.0000000e+00;
			vec4 v3 = vec4(r.y, g.y, b.y, a.y) * 1.0000000e+00;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(3, 1)) * conv1_pt;
			r = conv1_gather(p, 0);
			g = conv1_gather(p, 1);
			b = conv1_gather(p, 2);
			a = conv1_gather(p, 3);
			vec4 v4 = vec4(r.w, g.w, b.w, a.w) * 1.0000000e+00;
			vec4 v5 = vec4(r.z, g.z, b.z, a.z) * 1.0000000e+00;
			vec4 v6 = vec4(r.x, g.x, b.x, a.x) * 1.0000000e+00;
			vec4 v7 = vec4(r.y, g.y, b.y, a.y) * 1.0000000e+00;
			G[0][ay][ax] = int(packSnorm4x8(v0));
			G[1][ay][ax] = int(packSnorm4x8(v1));
			G[2][ay][ax] = int(packSnorm4x8(v2));
			G[3][ay][ax] = int(packSnorm4x8(v3));
			G[4][ay][ax] = int(packSnorm4x8(v4));
			G[5][ay][ax] = int(packSnorm4x8(v5));
			G[6][ay][ax] = int(packSnorm4x8(v6));
			G[7][ay][ax] = int(packSnorm4x8(v7));
		}
	}
	barrier();
	int s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;
	ivec4 r0, r1, r2, r3, r4, r5, r6, r7;
	vec4 f0, f1, f2, f3, f4, f5, f6, f7;
	r0 = ivec4(0); r1 = ivec4(0); r2 = ivec4(0); r3 = ivec4(0); r4 = ivec4(0); r5 = ivec4(0); r6 = ivec4(0); r7 = ivec4(0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2]; s1_0_0 = G[1][xy.y+0][xy.x+0];
	s1_0_1 = G[1][xy.y+0][xy.x+1]; s1_0_2 = G[1][xy.y+0][xy.x+2];
	s1_1_0 = G[1][xy.y+1][xy.x+0]; s1_1_1 = G[1][xy.y+1][xy.x+1];
	s1_1_2 = G[1][xy.y+1][xy.x+2]; s1_2_0 = G[1][xy.y+2][xy.x+0];
	s1_2_1 = G[1][xy.y+2][xy.x+1]; s1_2_2 = G[1][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x1FFCFADE, 0xF0F22BD1, 0xF7090BF8, 0xF7FB0817);
	r1 = D(r1, s0_0_0, 0xEC03FCF2, 0x0802FD09, 0x0101070B, 0xE200FFDE);
	r2 = D(r2, s0_0_0, 0x2EF30B00, 0x27FF06FD, 0x3A14D80D, 0x22090AF8);
	r3 = D(r3, s0_0_0, 0x0306FD02, 0xF204FBF8, 0xFE08FEE1, 0xEE1AFCF3);
	r4 = D(r4, s0_0_0, 0xE31BF116, 0x35F2FD12, 0xD3FA1C03, 0x0DF4FE19);
	r5 = D(r5, s0_0_0, 0xFA0F0005, 0x07032901, 0x180000D6, 0xDBFE190F);
	r6 = D(r6, s0_0_0, 0xF5FEFA12, 0x0AFB0AF7, 0x0703FC03, 0x01F901F8);
	r7 = D(r7, s0_0_0, 0xFB08FC0B, 0x2705FF13, 0x0BFF05F9, 0x1EF4120A);
	r0 = D(r0, s0_0_1, 0xE7F5E205, 0xF015E515, 0x21E6FC29, 0x12F7FF17);
	r1 = D(r1, s0_0_1, 0x03020FEC, 0xF7F40704, 0xFEEF02F4, 0xE1E515F3);
	r2 = D(r2, s0_0_1, 0xE31D0135, 0x00C400E9, 0xF9EE14D4, 0xF6010106);
	r3 = D(r3, s0_0_1, 0x02FC0206, 0x00E80AFE, 0x10FA0108, 0xEAFD060B);
	r4 = D(r4, s0_0_1, 0xF4F713FD, 0x98C6EBEB, 0x2228F6EA, 0x07FCF615);
	r5 = D(r5, s0_0_1, 0x04CD000D, 0x0CEEE2F9, 0xC8F30EED, 0xF74119F6);
	r6 = D(r6, s0_0_1, 0x0E09FA06, 0x10EEF4FD, 0x000AFC08, 0xFF08FEFB);
	r7 = D(r7, s0_0_1, 0x0019FB09, 0x03E81104, 0x06EF02FF, 0x11D6F207);
	r0 = D(r0, s0_0_2, 0xDF0C03DF, 0x00E61CFD, 0x1DCAF606, 0xF0F6FDE7);
	r1 = D(r1, s0_0_2, 0x0500030C, 0x06040B0A, 0xF7FDF610, 0x01F511D7);
	r2 = D(r2, s0_0_2, 0xE200EBFF, 0xFF11E602, 0xDC11FAF7, 0xFA1D02FB);
	r3 = D(r3, s0_0_2, 0x0102FDFE, 0x070A02F3, 0x03F903FE, 0x1013F5F7);
	r4 = D(r4, s0_0_2, 0x0EF9150E, 0x08120DBC, 0xE5EBF92A, 0x08F7FB15);
	r5 = D(r5, s0_0_2, 0xFA01EDFC, 0x0A2500CD, 0x03D7E2C5, 0xFE1AFE0B);
	r6 = D(r6, s0_0_2, 0xFFE9191E, 0x08D80705, 0xFF0501F9, 0x020202FC);
	r7 = D(r7, s0_0_2, 0x04EAFC00, 0xFB02FB06, 0xFE10FB05, 0xCB11F7FE);
	r0 = D(r0, s0_1_0, 0x18F21603, 0x0800FB18, 0xF9FBFF06, 0x09FB0820);
	r1 = D(r1, s0_1_0, 0x1318F409, 0x1F0FFB11, 0xF7FF01FA, 0xE5F417E5);
	r2 = D(r2, s0_1_0, 0x22C6251D, 0x06F212F2, 0x23EF100B, 0x22091A23);
	r3 = D(r3, s0_1_0, 0x11F021FA, 0xF7E52CEA, 0x10F22004, 0xFCFB1129);
	r4 = D(r4, s0_1_0, 0xF6E6FE10, 0x0F1BF405, 0xBEDFE6C5, 0xF7812C02);
	r5 = D(r5, s0_1_0, 0x0918E4E5, 0xECFDF5DB, 0x211400CD, 0xEB14DC2C);
	r6 = D(r6, s0_1_0, 0x8A04CE29, 0x08F70F01, 0x02FF0AFF, 0xF211E3FE);
	r7 = D(r7, s0_1_0, 0xE40BF8FF, 0x04FB09F4, 0xF808F7FA, 0x0C27F8E6);
	r0 = D(r0, s0_1_1, 0xC729D503, 0xCBEC0AF3, 0xF744F5CC, 0xD928D5C6);
	r1 = D(r1, s0_1_1, 0x02F816E6, 0xFBEAF1E7, 0xF9EAF908, 0x0BD6F2ED);
	r2 = D(r2, s0_1_1, 0xFEFBF708, 0x0F2C0713, 0xE40F0EFC, 0xCC08F814);
	r3 = D(r3, s0_1_1, 0x003F20FE, 0xED2A311B, 0xFECF0E05, 0x000A06FD);
	r4 = D(r4, s0_1_1, 0xEAF905F0, 0xDB3EA7EC, 0xCD18D4F8, 0x0A311B20);
	r5 = D(r5, s0_1_1, 0x238104F0, 0xD234E7E8, 0xE7481FB6, 0x04E0EB0F);
	r6 = D(r6, s0_1_1, 0x0309FEDB, 0x23B2CDFC, 0x06F20AFE, 0x0281E406);
	r7 = D(r7, s0_1_1, 0x1F03F8EC, 0x17F3E708, 0x0D20FCF8, 0xF9B6129B);
	r0 = D(r0, s0_1_2, 0x4181C47F, 0xF516060A, 0xFCA91D1E, 0x1E0ECA40);
	r1 = D(r1, s0_1_2, 0x1100060D, 0xE50405FC, 0x00F70F01, 0x0E0CF60C);
	r2 = D(r2, s0_1_2, 0x36F9EBFF, 0x09E416F9, 0x13F5100B, 0xFBDF26F7);
	r3 = D(r3, s0_1_2, 0x0AFB08FD, 0xECE6FF10, 0x0AF01400, 0xC1DF15FF);
	r4 = D(r4, s0_1_2, 0x12DC1309, 0xE8D208C4, 0x1BC7A72C, 0xEB24FB08);
	r5 = D(r5, s0_1_2, 0xEAF1FA10, 0x2BF1FB2D, 0xBC0F3BE8, 0x05F607F9);
	r6 = D(r6, s0_1_2, 0xEE14EEF4, 0x07FDF001, 0xF9390BFA, 0x0306F205);
	r7 = D(r7, s0_1_2, 0xFACD1804, 0xFE100401, 0xFEF008FA, 0xD5B90718);
	r0 = D(r0, s0_2_0, 0x2A1009E9, 0xF40DF501, 0x140BEDF2, 0x0707FD11);
	r1 = D(r1, s0_2_0, 0xDADE2505, 0x0CFBFF03, 0x19F60207, 0x011AED08);
	r2 = D(r2, s0_2_0, 0x0320DD0A, 0xE703F0F6, 0x07F91A04, 0x0AF90EFC);
	r3 = D(r3, s0_2_0, 0xFF04FFFF, 0xE7F31100, 0x06F714FF, 0xC800E02C);
	r4 = D(r4, s0_2_0, 0x1C04F9F2, 0xE7F9FD14, 0xDF1DEFEE, 0x04E4F019);
	r5 = D(r5, s0_2_0, 0x2D101D20, 0xDCFC0309, 0xC3E01A19, 0x0006F104);
	r6 = D(r6, s0_2_0, 0xEE02EEEA, 0xFD0409F8, 0x0701FE02, 0xFDFB0200);
	r7 = D(r7, s0_2_0, 0x0C03FF02, 0xF205F9ED, 0x03FFFF00, 0xF80AED16);
	r0 = D(r0, s0_2_1, 0xFAF81A12, 0x1E0303E5, 0xF504FECF, 0x20F8F900);
	r1 = D(r1, s0_2_1, 0x1CF9FFFD, 0xFAF201F4, 0x19E501FC, 0xF62E17F3);
	r2 = D(r2, s0_2_1, 0xC1FC1CDE, 0x07FB0BFE, 0x02E6080B, 0x28F50EE7);
	r3 = D(r3, s0_2_1, 0xFE0B03F9, 0x1EE320EA, 0x06F30909, 0xC1EC0616);
	r4 = D(r4, s0_2_1, 0x0E25F31F, 0xDF08EE1C, 0xF5F7FCD5, 0x07EDF80A);
	r5 = D(r5, s0_2_1, 0xFDB42900, 0x0419D909, 0x28F4B1E5, 0xFDFBF0EE);
	r6 = D(r6, s0_2_1, 0xF009CEF9, 0xEA03FB14, 0xFA050000, 0xFAF000FF);
	r7 = D(r7, s0_2_1, 0x0B0B00FF, 0x000801FF, 0xF9030405, 0x1A040113);
	r0 = D(r0, s0_2_2, 0xF8D30644, 0x050100F9, 0xE820F8F6, 0xF9D923F4);
	r1 = D(r1, s0_2_2, 0xFEEFFC0A, 0x0D0102F8, 0x03F7FF06, 0x04F41205);
	r2 = D(r2, s0_2_2, 0x180E2BDF, 0x0814F41B, 0x13F5E808, 0x140EF8FB);
	r3 = D(r3, s0_2_2, 0x0104FF00, 0xEE18EB06, 0x050F020A, 0xB019F8F9);
	r4 = D(r4, s0_2_2, 0xE94CFD01, 0x16C9082A, 0x15CEEB36, 0xFC07EF05);
	r5 = D(r5, s0_2_2, 0xFD0FE91F, 0xF5F2F427, 0x4B81A1C0, 0x07F8F2FC);
	r6 = D(r6, s0_2_2, 0x1703F804, 0x000010FF, 0x0000FE01, 0x02F90102);
	r7 = D(r7, s0_2_2, 0xF3EBF909, 0x0001F704, 0x030AFFFD, 0xDB21F9ED);
	r0 = D(r0, s1_0_0, 0xFC1820F9, 0x0A14F2FF, 0xFBF30102, 0x0AF6FAFE);
	r1 = D(r1, s1_0_0, 0x10200BFF, 0x0505F901, 0x02F5FD00, 0x0B16FB0E);
	r2 = D(r2, s1_0_0, 0xE01CE700, 0xE30C0313, 0xE20CF6F7, 0x1007030B);
	r3 = D(r3, s1_0_0, 0x00000101, 0x0F1CF9F8, 0xF8FD0105, 0x1BFEF4F8);
	r4 = D(r4, s1_0_0, 0xFDDFF6FE, 0xFEF4F004, 0xE8F5EAF8, 0x05FA1BFF);
	r5 = D(r5, s1_0_0, 0x02E70FFE, 0x16D70104, 0x050ADD0B, 0x38FF1308);
	r6 = D(r6, s1_0_0, 0x21FCFCFC, 0xEFFE0CFC, 0xFE02FFFF, 0x0105FFF8);
	r7 = D(r7, s1_0_0, 0x06020105, 0xF808FB0A, 0x0003FDFE, 0x1610140D);
	r0 = D(r0, s1_0_1, 0x02CD16FD, 0x0A02BBCF, 0xE200011B, 0x1BEF1BFD);
	r1 = D(r1, s1_0_1, 0x08071714, 0x09000E03, 0xFA06FF06, 0x1E290504);
	r2 = D(r2, s1_0_1, 0x440C1E0D, 0xF8130F01, 0xFB152708, 0xF2EC05F5);
	r3 = D(r3, s1_0_1, 0x00FC0304, 0x06F60108, 0xF9FFFC02, 0x0622F7F4);
	r4 = D(r4, s1_0_1, 0x06D80F0F, 0xD4EE12FD, 0xE8FDE8D4, 0x05030009);
	r5 = D(r5, s1_0_1, 0xFC300305, 0x0AEB00FB, 0xFB9EE4E1, 0x010A08FF);
	r6 = D(r6, s1_0_1, 0xF1EFDC0C, 0x08F7F6DC, 0x01F9F7FF, 0x03FEFCFC);
	r7 = D(r7, s1_0_1, 0xFF0800F6, 0x04001214, 0x0102040A, 0x0E1325EA);
	r0 = D(r0, s1_0_2, 0x2B81ECFC, 0x022AE7E6, 0xF80D0E0F, 0x1DFBDCD0);
	r1 = D(r1, s1_0_2, 0x06FFFE05, 0x01030503, 0xFF08FEF3, 0x021E0E09);
	r2 = D(r2, s1_0_2, 0x1216FCF3, 0xF1F800F9, 0x1B00F907, 0x00FD02ED);
	r3 = D(r3, s1_0_2, 0xFD000003, 0xFB37160E, 0x0014FEFF, 0x08070002);
	r4 = D(r4, s1_0_2, 0xFD1EF00C, 0x18070BFF, 0xD20625C8, 0xF715F10A);
	r5 = D(r5, s1_0_2, 0xF7F4FE1A, 0xFE191C04, 0xF01F2601, 0x02080502);
	r6 = D(r6, s1_0_2, 0xF8EBE9E3, 0x0203F6FA, 0xFEFBFF03, 0x00FF02FD);
	r7 = D(r7, s1_0_2, 0xFF0002FD, 0xFCF7050F, 0x00FD01F6, 0xFD040007);
	r0 = D(r0, s1_1_0, 0xE8FE1609, 0xE9F00C0A, 0x10F4F7F9, 0xF601FC0A);
	r1 = D(r1, s1_1_0, 0x0E0EF507, 0xF91406FC, 0xFB0407F9, 0x02270BEE);
	r2 = D(r2, s1_1_0, 0xDBC7F707, 0x15EA06F8, 0x221C0800, 0xFAF6F0F5);
	r3 = D(r3, s1_1_0, 0x03010501, 0x0D080CF3, 0x02FD17F4, 0x3D09E605);
	r4 = D(r4, s1_1_0, 0x2006100C, 0x10F9F813, 0xEBEDFBF5, 0x04212509);
	r5 = D(r5, s1_1_0, 0x0AF401E7, 0xEC3ED703, 0x1B112207, 0x0CEB20F7);
	r6 = D(r6, s1_1_0, 0x010310F7, 0xEBFF04FF, 0x07FEFF02, 0xFC01FF06);
	r7 = D(r7, s1_1_0, 0xFDF3F8F8, 0xFE06FEFB, 0x03000206, 0x10E2E008);
	r0 = D(r0, s1_1_1, 0x192FF3E9, 0xE8F801F1, 0x0519E0EF, 0xE94201DD);
	r1 = D(r1, s1_1_1, 0x12FB011C, 0xFB05FCF9, 0xE00D1427, 0xA0FCDB10);
	r2 = D(r2, s1_1_1, 0x35E91C06, 0x12FBD8DB, 0x1EF3D3ED, 0xEE1CE6F4);
	r3 = D(r3, s1_1_1, 0xFA02E6C8, 0xEAE8E981, 0xEAFBE4BE, 0xE9E9F7D8);
	r4 = D(r4, s1_1_1, 0xE3CEF1FD, 0xF80EDCD9, 0xFB06E9F9, 0xF71004E3);
	r5 = D(r5, s1_1_1, 0x0DB4EAFF, 0xE22AB785, 0x00DCF7EB, 0xF311EBD7);
	r6 = D(r6, s1_1_1, 0xF8F71B2C, 0x1401FC25, 0xFFFBF900, 0x08010F4B);
	r7 = D(r7, s1_1_1, 0x08FB0813, 0x0E0FF8F8, 0x10FC06EA, 0x15CAD7F0);
	r0 = D(r0, s1_1_2, 0xCE2A9700, 0xEE000005, 0x0AD9E105, 0xFDFB2D2D);
	r1 = D(r1, s1_1_2, 0xF8F5000F, 0x0B0318FE, 0x0506F4F7, 0x0CF0ED01);
	r2 = D(r2, s1_1_2, 0xCCFDD9FB, 0x0EE7020F, 0x061C5DD2, 0xF8E6FDE8);
	r3 = D(r3, s1_1_2, 0x0103FFEF, 0x0713EBD7, 0x0109FDAC, 0x0146E31C);
	r4 = D(r4, s1_1_2, 0xFB05FBE1, 0xEA0FF609, 0x0832E846, 0xF304FFEA);
	r5 = D(r5, s1_1_2, 0xF90804F1, 0xDA3EFDFF, 0xE41BF8AB, 0xEBF000F6);
	r6 = D(r6, s1_1_2, 0x110A0FFF, 0xF6EE0BFD, 0x030502EA, 0xFFFF041C);
	r7 = D(r7, s1_1_2, 0xFD12FFE6, 0xFA011609, 0xFDFDFF00, 0xF607ECDD);
	r0 = D(r0, s1_2_0, 0x07FDF706, 0xFC1BFFFA, 0xE60A1FF8, 0xF7F910F8);
	r1 = D(r1, s1_2_0, 0xE0FDECFA, 0x01FA0206, 0xFCF8FBFE, 0x07060BFC);
	r2 = D(r2, s1_2_0, 0xFFE4210E, 0xF30822F4, 0x0BF508ED, 0x0403F10E);
	r3 = D(r3, s1_2_0, 0xFE0509FD, 0xF1F70200, 0xF7EBFD02, 0x0A002AF2);
	r4 = D(r4, s1_2_0, 0xF80D00FD, 0x0F3E12FD, 0xFC1FF7F0, 0x05F7F302);
	r5 = D(r5, s1_2_0, 0x1DFFD7C6, 0xC4D510F6, 0x132EF202, 0xF60C08FD);
	r6 = D(r6, s1_2_0, 0x02FAF6FB, 0x07080A07, 0xFF050200, 0xFFFCFAFF);
	r7 = D(r7, s1_2_0, 0x09F7F6FA, 0x00050008, 0x00FFFB02, 0x170AEC09);
	r0 = D(r0, s1_2_1, 0x1408F0EB, 0x06F60C21, 0xC00709EF, 0xDAC5D0FB);
	r1 = D(r1, s1_2_1, 0x03EDEF05, 0xF10AFBEC, 0xFEFD001B, 0xE7EEF812);
	r2 = D(r2, s1_2_1, 0x2219C7FB, 0x07F014F0, 0xEA050BFE, 0x1C0A1CED);
	r3 = D(r3, s1_2_1, 0x04FFFEEA, 0xBE01EFE7, 0x04F8F6E4, 0x81DEEE03);
	r4 = D(r4, s1_2_1, 0x1613EEEF, 0x2D2624E4, 0xED0214F1, 0x03DEFA0A);
	r5 = D(r5, s1_2_1, 0xCE481CEC, 0x7FDECEF3, 0x0381EA30, 0x0107F1F9);
	r6 = D(r6, s1_2_1, 0x01180BF1, 0x0102020B, 0x01FBFFFE, 0xF701FE0E);
	r7 = D(r7, s1_2_1, 0x040511F0, 0x0FFC0306, 0x030004FD, 0x0D131010);
	r0 = D(r0, s1_2_2, 0xD04F0BFC, 0x1CF80DFB, 0x1218F6F8, 0x0A14030E);
	r1 = D(r1, s1_2_2, 0xF1FBF905, 0x13FAF80D, 0x0100FE0B, 0x06D40414);
	r2 = D(r2, s1_2_2, 0xDDDCE2E6, 0xDD1DF2F8, 0xE2ECE7FC, 0x02FA0BE7);
	r3 = D(r3, s1_2_2, 0xFDFD03FF, 0xF6FB0EE7, 0xFC0F0BE6, 0x242EF3EA);
	r4 = D(r4, s1_2_2, 0x2F0400F0, 0xE125FC08, 0xF4F415D2, 0x0305F709);
	r5 = D(r5, s1_2_2, 0xECDFFEF4, 0xEEDF05FF, 0xA9FDE8B2, 0x0003FF09);
	r6 = D(r6, s1_2_2, 0x0503FB0D, 0x010B04FA, 0x03FD0104, 0xFF0601FF);
	r7 = D(r7, s1_2_2, 0x0DFDFCFC, 0xFBE40EFE, 0x01FCFDFF, 0xFEF4081C);
	s0_0_0 = G[2][xy.y+0][xy.x+0]; s0_0_1 = G[2][xy.y+0][xy.x+1];
	s0_0_2 = G[2][xy.y+0][xy.x+2]; s0_1_0 = G[2][xy.y+1][xy.x+0];
	s0_1_1 = G[2][xy.y+1][xy.x+1]; s0_1_2 = G[2][xy.y+1][xy.x+2];
	s0_2_0 = G[2][xy.y+2][xy.x+0]; s0_2_1 = G[2][xy.y+2][xy.x+1];
	s0_2_2 = G[2][xy.y+2][xy.x+2]; s1_0_0 = G[3][xy.y+0][xy.x+0];
	s1_0_1 = G[3][xy.y+0][xy.x+1]; s1_0_2 = G[3][xy.y+0][xy.x+2];
	s1_1_0 = G[3][xy.y+1][xy.x+0]; s1_1_1 = G[3][xy.y+1][xy.x+1];
	s1_1_2 = G[3][xy.y+1][xy.x+2]; s1_2_0 = G[3][xy.y+2][xy.x+0];
	s1_2_1 = G[3][xy.y+2][xy.x+1]; s1_2_2 = G[3][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xE8F116F0, 0xF526000F, 0x1E07F314, 0xF5D51108);
	r1 = D(r1, s0_0_0, 0xFB010408, 0xFC1001FE, 0x170102FB, 0x060CF6FA);
	r2 = D(r2, s0_0_0, 0x09EE1C1C, 0xEBF004FC, 0x281601EB, 0xF8EEFFFF);
	r3 = D(r3, s0_0_0, 0x000703FF, 0xEAF3FA07, 0x00FE0300, 0xFDFF02E8);
	r4 = D(r4, s0_0_0, 0x0603030D, 0xFF2EFACE, 0x0AE7E8F5, 0x0FF501F0);
	r5 = D(r5, s0_0_0, 0x0DEF030F, 0x86E81126, 0xFC1C1711, 0xDC05F2F0);
	r6 = D(r6, s0_0_0, 0x0C39FADA, 0x0301FF12, 0x040100FD, 0xFBFF0205);
	r7 = D(r7, s0_0_0, 0x06F90509, 0x0515FA09, 0xF8030303, 0xFC0FC2EA);
	r0 = D(r0, s0_0_1, 0xF781E616, 0x1D19081B, 0x1415EFDE, 0xF40B180C);
	r1 = D(r1, s0_0_1, 0xF00BF00E, 0xF7FFFFFD, 0xF4240308, 0xE108F0EB);
	r2 = D(r2, s0_0_1, 0xBA0C21E0, 0x92F60704, 0xD4D525CA, 0xE11804F7);
	r3 = D(r3, s0_0_1, 0x010102FB, 0x0A1CDAFC, 0x0114030D, 0xF321E5F3);
	r4 = D(r4, s0_0_1, 0xEC08E3F6, 0xD315CAD2, 0xE60DEB08, 0xF5F904E8);
	r5 = D(r5, s0_0_1, 0xF84D0F22, 0xDFF9BD08, 0x218748F5, 0xF60DFCF4);
	r6 = D(r6, s0_0_1, 0xF7070D09, 0x03E323E1, 0x06FFFFF5, 0xFDFEFCFE);
	r7 = D(r7, s0_0_1, 0x0903FDF9, 0xE8F5F7F3, 0xF2FE01E4, 0xF9FDEB04);
	r0 = D(r0, s0_0_2, 0xF2811481, 0xF63AD9FD, 0x13EFE70B, 0x0029FFE3);
	r1 = D(r1, s0_0_2, 0xFFE8FAF5, 0x04F5F603, 0xFEF608F9, 0x0BE6FCEF);
	r2 = D(r2, s0_0_2, 0x292AFA1B, 0xF2FE2007, 0xCB0218EB, 0x07F911F3);
	r3 = D(r3, s0_0_2, 0x02FD0302, 0xF4DA1B20, 0x01ECF2FB, 0x0407FFFE);
	r4 = D(r4, s0_0_2, 0x12F002F2, 0x0C02199E, 0x09E90F00, 0xFEEC0AF6);
	r5 = D(r5, s0_0_2, 0x0FF619F2, 0x1BF313AC, 0xF91D2209, 0xEBF9E601);
	r6 = D(r6, s0_0_2, 0x080EDAEC, 0x0106070E, 0xFA07FD0D, 0xFF05FD01);
	r7 = D(r7, s0_0_2, 0xF803FC0F, 0xFBF10101, 0x0502FFFD, 0x00EE0E06);
	r0 = D(r0, s0_1_0, 0x1407F3FB, 0x111AE9FA, 0xED06FA0F, 0x2C01EAE7);
	r1 = D(r1, s0_1_0, 0x2EE00000, 0x03FA0601, 0xFEF80407, 0xCC2BF4DD);
	r2 = D(r2, s0_1_0, 0xE7D612FB, 0xD2F60FDE, 0xE6F709E4, 0xFCF5FEFE);
	r3 = D(r3, s0_1_0, 0xFD0108FE, 0xDA020C04, 0xF4030F0B, 0xFAF308D0);
	r4 = D(r4, s0_1_0, 0xF302120C, 0x1EE7360E, 0xE40DD9EF, 0x0D1003FC);
	r5 = D(r5, s0_1_0, 0xE005C916, 0xF1D9EF14, 0x0EFE04EE, 0x00011B00);
	r6 = D(r6, s0_1_0, 0xFB19F212, 0xF6000E05, 0xFE04FEFD, 0x0CFAFF02);
	r7 = D(r7, s0_1_0, 0xF6FEFC06, 0xF0E4FBFB, 0xFF000106, 0x1A0F11FC);
	r0 = D(r0, s0_1_1, 0x29FBEDE9, 0x0CD7EA19, 0x11F62102, 0xE9FDEA1B);
	r1 = D(r1, s0_1_1, 0xFD0A0824, 0x121C0014, 0x0713FBF0, 0x01D9F90A);
	r2 = D(r2, s0_1_1, 0x450FE407, 0x0616F1F5, 0x04F5CC0A, 0xEA12FBF9);
	r3 = D(r3, s0_1_1, 0xEC0F0015, 0xF52BFD11, 0x002801F3, 0x05FA1022);
	r4 = D(r4, s0_1_1, 0xFBEB2206, 0xFF36E6CF, 0xEA1DD6EB, 0x02F2ED12);
	r5 = D(r5, s0_1_1, 0x42DA1ADF, 0xE525F9F4, 0xAE31F00C, 0x0E0BF30E);
	r6 = D(r6, s0_1_1, 0xFCD900DA, 0xFCFE06F9, 0xFAFEFA0D, 0x0FEBFFED);
	r7 = D(r7, s0_1_1, 0x00FCFC07, 0x0B07F5F7, 0x02FD01FE, 0xF405FE30);
	r0 = D(r0, s0_1_2, 0x0C08F289, 0xF901DB06, 0xF2110B07, 0x26F919DC);
	r1 = D(r1, s0_1_2, 0xFB00FF02, 0xF7FA06F5, 0x08FF0607, 0x01041F0C);
	r2 = D(r2, s0_1_2, 0xFE10FA01, 0x16240D01, 0xFC292535, 0xF8100106);
	r3 = D(r3, s0_1_2, 0xFF010108, 0xFEF9F505, 0xFFFE0403, 0xF41EEF02);
	r4 = D(r4, s0_1_2, 0xE712E6DD, 0x1CD21FF3, 0xD29DDEFD, 0x0F061201);
	r5 = D(r5, s0_1_2, 0x0108EFDF, 0x0E1B41EB, 0xDA282011, 0xF7FD05FF);
	r6 = D(r6, s0_1_2, 0xFFF0FDF0, 0x08F90F01, 0xFF050000, 0xFEF8FDF9);
	r7 = D(r7, s0_1_2, 0x0A09FE08, 0xF6EA1410, 0xFE09040A, 0xF01DF608);
	r0 = D(r0, s0_2_0, 0xF70E1108, 0xE7EBFB01, 0xEEFEDC08, 0xFEEEF310);
	r1 = D(r1, s0_2_0, 0xEE2A0208, 0x06030A01, 0x0B130905, 0xECFCFBF8);
	r2 = D(r2, s0_2_0, 0xF8F3110A, 0xFAFC00F3, 0xF70AEAF8, 0x12F5F808);
	r3 = D(r3, s0_2_0, 0x02020400, 0x1421140C, 0x0A12020A, 0x0402D7F2);
	r4 = D(r4, s0_2_0, 0xFA0F03FF, 0x04EFCA03, 0x07FFF90C, 0xF9030504);
	r5 = D(r5, s0_2_0, 0xD7231619, 0xF60D0E25, 0xF7EDF1F9, 0xFBFD0207);
	r6 = D(r6, s0_2_0, 0xE20EEC1A, 0x050406FE, 0x00FCFF01, 0xFBFD0101);
	r7 = D(r7, s0_2_0, 0x08F5FBFB, 0x00FF0F16, 0x010101FE, 0x1FFCD8F6);
	r0 = D(r0, s0_2_1, 0xD8E1DCE2, 0xFF1CECFE, 0xFB030900, 0xFF030A04);
	r1 = D(r1, s0_2_1, 0x0E04F4F7, 0x0D041E0A, 0xF6010F01, 0x1817051B);
	r2 = D(r2, s0_2_1, 0xAC0219FB, 0x12F9DCF3, 0xDA03F2F1, 0x0BFBFEFF);
	r3 = D(r3, s0_2_1, 0x02FF00FB, 0xFAEBF710, 0x0007FDFC, 0x29FAFAFC);
	r4 = D(r4, s0_2_1, 0x1105D1F1, 0xEFF9F3F7, 0x19FF13EE, 0xFD08F303);
	r5 = D(r5, s0_2_1, 0x01E9D6D8, 0xFA2BFB14, 0x080381E9, 0x0308FB01);
	r6 = D(r6, s0_2_1, 0xFCF50D00, 0xFBFA0008, 0x0101FEFC, 0xFF090006);
	r7 = D(r7, s0_2_1, 0xFDFB02FC, 0xF7000F05, 0x03FD00FD, 0xF70622F4);
	r0 = D(r0, s0_2_2, 0x2EF91C81, 0x07F5E7F0, 0x09000E08, 0xF00A130C);
	r1 = D(r1, s0_2_2, 0x04F205E5, 0x1101000D, 0x01FAFE06, 0x16F401FD);
	r2 = D(r2, s0_2_2, 0x02F517F4, 0xFCE5FC01, 0xFED2F1DD, 0xF4FAEF04);
	r3 = D(r3, s0_2_2, 0x04FD01FC, 0x04F805F7, 0x05FEFCFC, 0xDF1CDD16);
	r4 = D(r4, s0_2_2, 0xEB100FFD, 0xEDE10D0A, 0xE32BDC11, 0x09010A03);
	r5 = D(r5, s0_2_2, 0x07BA0FE3, 0xE0EC1C0B, 0x1BECF5DA, 0x00F1F102);
	r6 = D(r6, s0_2_2, 0xFAFE0200, 0xFE0604FE, 0x02FE06FC, 0x0204FD01);
	r7 = D(r7, s0_2_2, 0xFFFBF8EF, 0x11F707F7, 0xFEFE0003, 0xFDF3FBFC);
	r0 = D(r0, s1_0_0, 0xF6100318, 0xEF0BFAE5, 0x1215F7E2, 0x07F70403);
	r1 = D(r1, s1_0_0, 0xFFF400F3, 0x02080005, 0x010B0A08, 0xFF1A07EB);
	r2 = D(r2, s1_0_0, 0xFDDF06E3, 0x07DDFBE5, 0x051912FF, 0xF30801FF);
	r3 = D(r3, s1_0_0, 0x000100FF, 0x20FA100C, 0x00020501, 0x151D15F5);
	r4 = D(r4, s1_0_0, 0x0A0A0504, 0x03D608DD, 0x0A1F01D6, 0xF0F512FC);
	r5 = D(r5, s1_0_0, 0xE9F0261A, 0x1902D100, 0x091FEBED, 0x3EFF1E10);
	r6 = D(r6, s1_0_0, 0x0E0BF3E8, 0xEBFE0A05, 0x0002FC00, 0xFCFBFF03);
	r7 = D(r7, s1_0_0, 0xF2FBFA0A, 0xF5FE03FC, 0x000603FF, 0xEE2307F7);
	r0 = D(r0, s1_0_1, 0x4EFBFF25, 0x0C08F113, 0x160606F4, 0xF7200203);
	r1 = D(r1, s1_0_1, 0xF1F70EFA, 0xF006FDFB, 0x04010408, 0xEDF218FC);
	r2 = D(r2, s1_0_1, 0xF822F0F2, 0x04020508, 0xFE39F3E1, 0xFFE8FAFA);
	r3 = D(r3, s1_0_1, 0xFC02FD05, 0xF3F5E9F7, 0xF5FCFFFB, 0x0CF8F306);
	r4 = D(r4, s1_0_1, 0x10C8E701, 0x0FD3EC0B, 0x041408E7, 0xFF0D180C);
	r5 = D(r5, s1_0_1, 0xFFF11CF0, 0xF7F3E03B, 0x09100901, 0xF60BFF04);
	r6 = D(r6, s1_0_1, 0xF00812ED, 0xEAF00710, 0xFB00FE04, 0x0AFC0103);
	r7 = D(r7, s1_0_1, 0xF2F0E603, 0xF518FA04, 0x4600FE03, 0xEEDBEAFD);
	r0 = D(r0, s1_0_2, 0xCB21EFE9, 0x14EAFE0E, 0xF20D16E5, 0x1AF90818);
	r1 = D(r1, s1_0_2, 0x02F00814, 0xF603F5FF, 0x0508FFF7, 0xDE00F304);
	r2 = D(r2, s1_0_2, 0xE3F511D1, 0x09060F39, 0xE6F3341F, 0x0DF9FB11);
	r3 = D(r3, s1_0_2, 0xFCFF02FD, 0xCE18F00F, 0x000F02F7, 0xF9010DF1);
	r4 = D(r4, s1_0_2, 0x0629F5F8, 0x24E9D1F7, 0x14E7F8AA, 0xFBF309FD);
	r5 = D(r5, s1_0_2, 0xF60107E1, 0xEDD61BF3, 0xEF95DBD5, 0x0E050B0C);
	r6 = D(r6, s1_0_2, 0x110201E9, 0x04F9FD09, 0xF8FC0104, 0x02FE0300);
	r7 = D(r7, s1_0_2, 0xF6F2F400, 0xF7030D0E, 0x18F80106, 0x0912E4DB);
	r0 = D(r0, s1_1_0, 0x0B1F04DC, 0x0DCE13FA, 0xFF04FBF8, 0x0909F7F5);
	r1 = D(r1, s1_1_0, 0xDD0214F9, 0xEC020002, 0xF7FBFDF3, 0x1715ECD4);
	r2 = D(r2, s1_1_0, 0x00FAF1DC, 0x1C16E803, 0xECFE1D02, 0xF3F90309);
	r3 = D(r3, s1_1_0, 0x06FF02FF, 0xF1F917FB, 0x0C03F8FA, 0xFBF0D6E0);
	r4 = D(r4, s1_1_0, 0x0DFAFFEF, 0xFD03F118, 0x121F19DA, 0xEBF811FC);
	r5 = D(r5, s1_1_0, 0xED0A26E5, 0xCDE729F5, 0xF6F22EC5, 0x02F9FAFE);
	r6 = D(r6, s1_1_0, 0x0ADBF2F1, 0x02EC030C, 0x04FFFF01, 0xF9FF0500);
	r7 = D(r7, s1_1_0, 0xFB07E8F9, 0xFAF4F513, 0xFFFC05FE, 0x1D040115);
	r0 = D(r0, s1_1_1, 0xFBF802E3, 0xF01A25D7, 0x0605EAE8, 0xE41EF20D);
	r1 = D(r1, s1_1_1, 0xCEFF03FD, 0x880C050E, 0xF6F3FA09, 0x9CF1023C);
	r2 = D(r2, s1_1_1, 0xE502FD15, 0xFEE12517, 0xCDCB0E27, 0xEBDA0D06);
	r3 = D(r3, s1_1_1, 0xF9030203, 0xDC1C2425, 0xDEF7FE25, 0xF100EC18);
	r4 = D(r4, s1_1_1, 0xE7F80318, 0x1081D90E, 0x0700D7FA, 0xFD02FD23);
	r5 = D(r5, s1_1_1, 0xAD17C615, 0x81D308C5, 0xFC2E1EF4, 0x1320DDFB);
	r6 = D(r6, s1_1_1, 0x06E8050A, 0x02F406F5, 0xFF0105FE, 0x0908F6FE);
	r7 = D(r7, s1_1_1, 0x180FF10A, 0xEA0504E5, 0x0BF8FBFF, 0x062B0206);
	r0 = D(r0, s1_1_2, 0x010D94CB, 0xF3E3F8C6, 0xFEFE03DF, 0x17CB00F1);
	r1 = D(r1, s1_1_2, 0xF405FE00, 0xDDFF05EB, 0x0D0B03FD, 0xDE12F7FE);
	r2 = D(r2, s1_1_2, 0x0BFBE2F4, 0xF9F4E704, 0xE8C9CE81, 0xF61DE7DA);
	r3 = D(r3, s1_1_2, 0xFD05FA03, 0x0BFEF91B, 0x06F30606, 0xCBFDE3EA);
	r4 = D(r4, s1_1_2, 0x0FC411E1, 0x1DB92708, 0x081FFEF0, 0x0DFA0001);
	r5 = D(r5, s1_1_2, 0x02EAF50B, 0x0D0F0A12, 0x02DFAABE, 0xFE14F5EF);
	r6 = D(r6, s1_1_2, 0xF7FF04D1, 0x0605EFFD, 0x0100FCFC, 0xFDFF04FB);
	r7 = D(r7, s1_1_2, 0xF905E0F2, 0xF30DFE03, 0xF5FDFF06, 0x1910E913);
	r0 = D(r0, s1_2_0, 0xFAC2F608, 0xFFCFF610, 0x071EFB0C, 0xFA0AEB0F);
	r1 = D(r1, s1_2_0, 0x0707F5F1, 0xFEF6030A, 0x09EFFE04, 0x04E2F3FC);
	r2 = D(r2, s1_2_0, 0xE71FE0E6, 0x00E5FBFF, 0xF20F1E0E, 0xF9101302);
	r3 = D(r3, s1_2_0, 0x00F9FE01, 0x0DFDF7FF, 0x06FBFB00, 0x03DE07B2);
	r4 = D(r4, s1_2_0, 0x04E4F2E9, 0xEE0F14DB, 0xF6F314D1, 0x05E2FD0B);
	r5 = D(r5, s1_2_0, 0x15E9FCF0, 0x1022E4EE, 0xE1FBC0DB, 0xFE01FCF3);
	r6 = D(r6, s1_2_0, 0x022512DF, 0x05F8FF04, 0xFEFFFCFF, 0x01050004);
	r7 = D(r7, s1_2_0, 0x050DF00B, 0xFFF005FA, 0xFE03FCFF, 0xF703F7F5);
	r0 = D(r0, s1_2_1, 0x09FFEDE6, 0xF8F0FEFB, 0x0E13EF17, 0x19FFF80C);
	r1 = D(r1, s1_2_1, 0x0601FC02, 0xEC0400F1, 0xF7EA0302, 0x2A010C08);
	r2 = D(r2, s1_2_1, 0xAABC0721, 0xF4FC022B, 0xF8E4F4FD, 0xF4FF00E8);
	r3 = D(r3, s1_2_1, 0x02FA04FB, 0xFB0C0FE5, 0x0B01F812, 0xFC25070A);
	r4 = D(r4, s1_2_1, 0xF61FFA0E, 0x18C3051B, 0x0DE21117, 0xF9171214);
	r5 = D(r5, s1_2_1, 0xEA188127, 0x0A1310A8, 0x0F0B81F0, 0xFCF608FB);
	r6 = D(r6, s1_2_1, 0xFD1FEE08, 0xF803F605, 0x00FE08FD, 0xFD03FF00);
	r7 = D(r7, s1_2_1, 0x0D06FA08, 0x01F1FBED, 0x00FB0204, 0x0BEDE60C);
	r0 = D(r0, s1_2_2, 0xF7DEC5FF, 0xFCF5FCEC, 0xF102F1E8, 0xF1F91607);
	r1 = D(r1, s1_2_2, 0x0506F8FD, 0xF81602F8, 0xF7FF0104, 0xF4E8FCF5);
	r2 = D(r2, s1_2_2, 0xFBD51BEE, 0x0519FA05, 0x041CF021, 0x16140000);
	r3 = D(r3, s1_2_2, 0x03010000, 0x0612FD08, 0x01F90908, 0xED0819C3);
	r4 = D(r4, s1_2_2, 0x11F112FD, 0xE604EC0B, 0xFB08FB41, 0x031205EF);
	r5 = D(r5, s1_2_2, 0x062CE70E, 0x1604DF01, 0x8181810E, 0x04F3FDF7);
	r6 = D(r6, s1_2_2, 0x05D9FEFD, 0xFDFA0609, 0x03000000, 0x0001FF01);
	r7 = D(r7, s1_2_2, 0xF2FF0402, 0xFC14020A, 0x0400FF00, 0xFD1509F2);
	s0_0_0 = G[4][xy.y+0][xy.x+0]; s0_0_1 = G[4][xy.y+0][xy.x+1];
	s0_0_2 = G[4][xy.y+0][xy.x+2]; s0_1_0 = G[4][xy.y+1][xy.x+0];
	s0_1_1 = G[4][xy.y+1][xy.x+1]; s0_1_2 = G[4][xy.y+1][xy.x+2];
	s0_2_0 = G[4][xy.y+2][xy.x+0]; s0_2_1 = G[4][xy.y+2][xy.x+1];
	s0_2_2 = G[4][xy.y+2][xy.x+2]; s1_0_0 = G[5][xy.y+0][xy.x+0];
	s1_0_1 = G[5][xy.y+0][xy.x+1]; s1_0_2 = G[5][xy.y+0][xy.x+2];
	s1_1_0 = G[5][xy.y+1][xy.x+0]; s1_1_1 = G[5][xy.y+1][xy.x+1];
	s1_1_2 = G[5][xy.y+1][xy.x+2]; s1_2_0 = G[5][xy.y+2][xy.x+0];
	s1_2_1 = G[5][xy.y+2][xy.x+1]; s1_2_2 = G[5][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x14FA2B08, 0xE70EC7ED, 0x03F8F7E8, 0x08F1F9E4);
	r1 = D(r1, s0_0_0, 0x0BED01FB, 0xFDFA0803, 0xFDF9FA0B, 0x11F1040F);
	r2 = D(r2, s0_0_0, 0xFEF2FEB4, 0x0FEEEB06, 0xDBE814F9, 0x15F3F401);
	r3 = D(r3, s0_0_0, 0xFCFD0009, 0x1BF4010F, 0xFBFA050E, 0x010B0314);
	r4 = D(r4, s0_0_0, 0xF506E71C, 0x27F3E5CA, 0xE7080511, 0x03FB03F8);
	r5 = D(r5, s0_0_0, 0xE617FEDB, 0x0C00FE0C, 0xFB100A21, 0x01F9E904);
	r6 = D(r6, s0_0_0, 0xED10EFF8, 0x1203E5FD, 0x0001FE05, 0x040400F9);
	r7 = D(r7, s0_0_0, 0xFEFCF8F7, 0xF3F9FAF4, 0x07FCFE00, 0x2000FE0A);
	r0 = D(r0, s0_0_1, 0x1204E8DE, 0xE210EBFB, 0x0005030B, 0xFAFA0809);
	r1 = D(r1, s0_0_1, 0x1EF90602, 0x090405F0, 0x08FE03F3, 0x32FE01F1);
	r2 = D(r2, s0_0_1, 0xC91EE3DD, 0x1509F5E6, 0x16E9F0EE, 0x1A0B1703);
	r3 = D(r3, s0_0_1, 0xFEFFFF00, 0x11010C00, 0x0A04F202, 0x0E07F807);
	r4 = D(r4, s0_0_1, 0x0A03E9DD, 0xECE9FD98, 0x09F4FE0C, 0x04F7FAFE);
	r5 = D(r5, s0_0_1, 0x070B04FE, 0xF9E001F7, 0x0FFE00E8, 0xF9FFF7E9);
	r6 = D(r6, s0_0_1, 0xE3F827FD, 0x00F90FEC, 0xFCFEFFFD, 0x00FF010A);
	r7 = D(r7, s0_0_1, 0x1404FDFF, 0x0E030F07, 0x07FAF600, 0x2BFD01FF);
	r0 = D(r0, s0_0_2, 0xDEF1EEEC, 0xFE14F225, 0x12F2FF05, 0xFF020BFD);
	r1 = D(r1, s0_0_2, 0x0500F901, 0xFD000300, 0x06FDFFFE, 0x10F30E04);
	r2 = D(r2, s0_0_2, 0x3DF20481, 0x0402F5DF, 0xED24E5B7, 0xF4F30008);
	r3 = D(r3, s0_0_2, 0x0301FD04, 0xFC07FA05, 0x0A0101E9, 0x0FF40101);
	r4 = D(r4, s0_0_2, 0xF201F2FC, 0xD6F3FFCE, 0x0E02F10C, 0x0006FDF5);
	r5 = D(r5, s0_0_2, 0xDD03FA10, 0xE1D3190E, 0x0C06F240, 0xF309FCFA);
	r6 = D(r6, s0_0_2, 0xE90906F8, 0xF30506F8, 0x02030109, 0x00FF04FE);
	r7 = D(r7, s0_0_2, 0x030201ED, 0x0DE90CFF, 0xFAF603FD, 0xF3F8FE18);
	r0 = D(r0, s0_1_0, 0xEB041AD5, 0xF6F51CFD, 0x0204D306, 0xF0161114);
	r1 = D(r1, s0_1_0, 0xE5FF1807, 0x020CE30B, 0x021A1603, 0x0619F7DF);
	r2 = D(r2, s0_1_0, 0x169A11FB, 0x18F8E5F1, 0xFBD82DDF, 0xF2FDDBF5);
	r3 = D(r3, s0_1_0, 0x0AF4D403, 0x2A0B8602, 0x1501D200, 0xECF1D417);
	r4 = D(r4, s0_1_0, 0xE2EEE6F6, 0x07F0E90D, 0xE50618BB, 0x2FD5F8F6);
	r5 = D(r5, s0_1_0, 0x0029FBAE, 0xEB03CE16, 0xDE08F801, 0xF000E4FF);
	r6 = D(r6, s0_1_0, 0xD115F8EB, 0x1EE405FF, 0x02FB0102, 0xF10734FC);
	r7 = D(r7, s0_1_0, 0xFE06EC02, 0x0F08F90A, 0xFE010202, 0xD8FEDEF1);
	r0 = D(r0, s0_1_1, 0xEB263EEC, 0xD8F80A10, 0xDFD027FA, 0x090D0003);
	r1 = D(r1, s0_1_1, 0xDD1BEB1A, 0x090408F8, 0xFBE6FCF5, 0xAA1FEF0B);
	r2 = D(r2, s0_1_1, 0xF7E7100C, 0x0EFF120E, 0x0409CD56, 0x122D0E17);
	r3 = D(r3, s0_1_1, 0x1A1C1B02, 0x2AEA39EF, 0x1A0417EF, 0xFA03FFF2);
	r4 = D(r4, s0_1_1, 0x12FBE5F0, 0x14241CD5, 0xF208FCDF, 0xF8F1FDFD);
	r5 = D(r5, s0_1_1, 0x1CFA05F6, 0x24232502, 0xDA0A15B7, 0xF6FE09E2);
	r6 = D(r6, s0_1_1, 0xBADCDA0B, 0xE509F217, 0xFDFC01FF, 0xEFF0DB07);
	r7 = D(r7, s0_1_1, 0xF6222E04, 0xEA0CF6F2, 0x02211BFE, 0xF7ED2303);
	r0 = D(r0, s0_1_2, 0x2B6081F7, 0xF815E7F7, 0x06EF0B09, 0xEED4DDF6);
	r1 = D(r1, s0_1_2, 0x0F12F5F6, 0x0BFC0D07, 0xFCFAFCFB, 0xD905F70B);
	r2 = D(r2, s0_1_2, 0x37D50F9C, 0x0604F4F1, 0x360BFCD0, 0x010703F3);
	r3 = D(r3, s0_1_2, 0x090103FC, 0x0D000709, 0x00F801E8, 0x1204FA17);
	r4 = D(r4, s0_1_2, 0x0A02070D, 0xF4FDE810, 0xDBFD243B, 0x01FEEEEF);
	r5 = D(r5, s0_1_2, 0x111DE80F, 0x2203FD22, 0xD81C141D, 0x14FC0AE2);
	r6 = D(r6, s0_1_2, 0xF0F108DC, 0xEF0A03F6, 0xFAFC0804, 0xF300FB03);
	r7 = D(r7, s0_1_2, 0x0D050D12, 0x06F30E05, 0x06FD0503, 0xED0D0616);
	r0 = D(r0, s0_2_0, 0xEF01050A, 0x100FECFE, 0x0CF60F20, 0xEF0E0611);
	r1 = D(r1, s0_2_0, 0xEBEA0F00, 0x0401F702, 0xFBEEFF09, 0x0E2B000E);
	r2 = D(r2, s0_2_0, 0xC1FF34D2, 0x110D13E6, 0x2BF618F9, 0xF4F900FA);
	r3 = D(r3, s0_2_0, 0xFBFC0001, 0xF6E5F5FC, 0x09EA0003, 0xDA19F903);
	r4 = D(r4, s0_2_0, 0x25EB07ED, 0x0D0B0F0B, 0xEA00EA2F, 0x00F10FF2);
	r5 = D(r5, s0_2_0, 0xB8E3FBD9, 0xEAC8C6F9, 0xEE0FEB16, 0x0DF5FE09);
	r6 = D(r6, s0_2_0, 0x07020AFC, 0x0BFFFC15, 0xFD0001FF, 0x0602F6FB);
	r7 = D(r7, s0_2_0, 0x000CEE04, 0x04E9FA15, 0xFF030301, 0x031AE80C);
	r0 = D(r0, s0_2_1, 0x001CDD01, 0x0AF51F03, 0x1DECE30B, 0x32AEF0FC);
	r1 = D(r1, s0_2_1, 0xD3F306FB, 0xF1E417EF, 0x0306FDFB, 0xFDCE2C12);
	r2 = D(r2, s0_2_1, 0x0B17020C, 0xF02F05FD, 0x163F0714, 0xF41CFD17);
	r3 = D(r3, s0_2_1, 0x050002FC, 0xF70E0FF9, 0x0C060506, 0xF801EE02);
	r4 = D(r4, s0_2_1, 0xEB112206, 0xE61710F7, 0x0E12F0AE, 0x020CF2FF);
	r5 = D(r5, s0_2_1, 0x0407EB31, 0xDA1D0BF5, 0x0805E1FE, 0x0605EF06);
	r6 = D(r6, s0_2_1, 0xFF12ECF9, 0xFEEF1602, 0x02030004, 0xFFF9FFFF);
	r7 = D(r7, s0_2_1, 0x0F060AFE, 0xEF020FEF, 0xFF07FB05, 0x0DEDEAFE);
	r0 = D(r0, s0_2_2, 0x81018117, 0xEDFB1303, 0xF2D603EE, 0x020700FD);
	r1 = D(r1, s0_2_2, 0xD416FFEC, 0xCE050911, 0x0601FD0A, 0x1AFD0612);
	r2 = D(r2, s0_2_2, 0xE413F7BF, 0x1C13FAEA, 0x1F14F7FB, 0x24F102F4);
	r3 = D(r3, s0_2_2, 0x06FFFF05, 0x0314FBED, 0x13FD0007, 0x060405F9);
	r4 = D(r4, s0_2_2, 0x021B0CFC, 0x25F8ED01, 0x1CFA07F8, 0xF903F9F0);
	r5 = D(r5, s0_2_2, 0x0E0D0612, 0x1524E2E3, 0x381AEF0D, 0xFBFA00FA);
	r6 = D(r6, s0_2_2, 0xFA02FE01, 0x08040306, 0x01FE0103, 0xF6FE04F7);
	r7 = D(r7, s0_2_2, 0x1913F800, 0x16F1FF0C, 0x05FBFD03, 0xDEED0E12);
	r0 = D(r0, s1_0_0, 0xE400E802, 0x03FCD911, 0xF4061313, 0xEE060B0F);
	r1 = D(r1, s1_0_0, 0xFA080110, 0xEC01ECF7, 0x16F70005, 0xE60DECF2);
	r2 = D(r2, s1_0_0, 0x070E000C, 0x0002131B, 0x00F3080D, 0xF9FE0700);
	r3 = D(r3, s1_0_0, 0x04FF02FF, 0xF4010206, 0xFEF70501, 0x25F8FDFD);
	r4 = D(r4, s1_0_0, 0xE8FC06FF, 0x011800FC, 0x16E2F802, 0x24FA1E06);
	r5 = D(r5, s1_0_0, 0xDA11F3E9, 0xF80A2207, 0x1D170619, 0x2703FEF4);
	r6 = D(r6, s1_0_0, 0x0300FFF7, 0x0907F60A, 0x0300FFFF, 0xFC03FB02);
	r7 = D(r7, s1_0_0, 0x0D0A070B, 0x03040501, 0x0100FD03, 0xD7FD1E05);
	r0 = D(r0, s1_0_1, 0x1507FAFC, 0xF1FE2D0C, 0x0AF9F3F7, 0x10111305);
	r1 = D(r1, s1_0_1, 0xE90CEF0D, 0x0C0CF201, 0x040500F4, 0xED0FDFF0);
	r2 = D(r2, s1_0_1, 0x120311EE, 0x120E0AF3, 0x050B0804, 0x150200F0);
	r3 = D(r3, s1_0_1, 0xFD02FF06, 0xDB0A01EF, 0xF2FC06FD, 0xFEF9FCEF);
	r4 = D(r4, s1_0_1, 0xFFEFEF0B, 0xF7FF1CE8, 0xEC040B0F, 0x04DF1508);
	r5 = D(r5, s1_0_1, 0xF7E5AB0E, 0x2D041EF9, 0xEBD5E916, 0x02271D19);
	r6 = D(r6, s1_0_1, 0x020DD805, 0xF8FEF915, 0xFEFD0207, 0x0300FBFF);
	r7 = D(r7, s1_0_1, 0xFAFD0409, 0x0A020600, 0x010404F1, 0xEA20ED0C);
	r0 = D(r0, s1_0_2, 0xED81F2ED, 0xF40003CB, 0x08EFFC0C, 0x0AFBDBF1);
	r1 = D(r1, s1_0_2, 0xFF04FD04, 0xF404FB00, 0xF9F700FE, 0xFB1D04F7);
	r2 = D(r2, s1_0_2, 0x07F91417, 0xEA07E807, 0xDE0612CF, 0x01ECEBFE);
	r3 = D(r3, s1_0_2, 0x02010302, 0x06100401, 0xFCF9030B, 0x02F4F20F);
	r4 = D(r4, s1_0_2, 0xE1050EFB, 0xFCEEEB13, 0x13FBEDFB, 0xF8FA0306);
	r5 = D(r5, s1_0_2, 0xE9093608, 0xE21EFC20, 0xDD13FBF2, 0xFFFD0F05);
	r6 = D(r6, s1_0_2, 0xF8E702FC, 0x0901EF04, 0x03F004FE, 0x0102FEFE);
	r7 = D(r7, s1_0_2, 0x0BF3F8F8, 0x070FFC09, 0x010AFB05, 0xF5FFD016);
	r0 = D(r0, s1_1_0, 0xE4E209FB, 0x05FAEEF8, 0xF00A2013, 0xF7F70E06);
	r1 = D(r1, s1_1_0, 0xE3EBFD08, 0x04040000, 0x02020D0C, 0xF904F4FA);
	r2 = D(r2, s1_1_0, 0xFDDFE2E9, 0xEDECFDD9, 0x05F5E512, 0x18FC1A2A);
	r3 = D(r3, s1_1_0, 0x0AFB0104, 0x0DF2F3FC, 0x19FE020E, 0x1806030E);
	r4 = D(r4, s1_1_0, 0x0F00FE13, 0x040326ED, 0xDE0DD8F3, 0x500904F8);
	r5 = D(r5, s1_1_0, 0xCF05FD29, 0xDAF4C704, 0x1CF612DB, 0xB50B01E0);
	r6 = D(r6, s1_1_0, 0x1BF80DE5, 0xF20CFCFB, 0x02FE0200, 0x0308FBFA);
	r7 = D(r7, s1_1_0, 0x0705081F, 0xEA0A07EF, 0xFCFF00FC, 0xEFF3192E);
	r0 = D(r0, s1_1_1, 0xAD0907EC, 0x0105130B, 0x0F141400, 0x0504ED02);
	r1 = D(r1, s1_1_1, 0x0AEB0001, 0xED03E405, 0xF20000F7, 0x0B12C0FA);
	r2 = D(r2, s1_1_1, 0x13FA09E9, 0xD6EE10B5, 0xBC04F1E4, 0xDB06F1DD);
	r3 = D(r3, s1_1_1, 0xF72106FD, 0xF52C080E, 0xF31A0106, 0xCC18BDF2);
	r4 = D(r4, s1_1_1, 0xFBF9F2DD, 0xF7F4002B, 0xFC0711F7, 0x102EFDFE);
	r5 = D(r5, s1_1_1, 0x18175F12, 0x81064D00, 0xF2D1F30B, 0x00D5FCE9);
	r6 = D(r6, s1_1_1, 0x22030A0A, 0x06FCEC01, 0x00FD030C, 0x09EC0203);
	r7 = D(r7, s1_1_1, 0xFBFB0219, 0xF418FBF9, 0xF6F304FB, 0xD2DB02F2);
	r0 = D(r0, s1_1_2, 0x22B8F3AB, 0x000707FF, 0xF8E6DBFB, 0xFFD70722);
	r1 = D(r1, s1_1_2, 0x010E0601, 0xFE07F602, 0x131201FD, 0x110614F0);
	r2 = D(r2, s1_1_2, 0x1600E20C, 0x1121F2FB, 0x98BC0981, 0xE50A0506);
	r3 = D(r3, s1_1_2, 0x04F203FC, 0x10E714F6, 0x05070904, 0x35DD16DD);
	r4 = D(r4, s1_1_2, 0x1008EC11, 0xF50E1ED9, 0x260F131D, 0x0E0BFD07);
	r5 = D(r5, s1_1_2, 0xEA2F12F8, 0x12972FFB, 0x142C0A1D, 0x01071714);
	r6 = D(r6, s1_1_2, 0xF41DF00D, 0x1005FBFF, 0xFE0F02FC, 0xFA060600);
	r7 = D(r7, s1_1_2, 0xF2F10DF9, 0xFC0B0403, 0x04F2FDFE, 0x2CF3C2E2);
	r0 = D(r0, s1_2_0, 0xED020A19, 0x0E0906DB, 0x14FA08F0, 0xF70702FD);
	r1 = D(r1, s1_2_0, 0x0EF40910, 0xF909F3FB, 0xFFFE06FB, 0x0B081DE8);
	r2 = D(r2, s1_2_0, 0xF3F9150C, 0xE0FE01F7, 0x0C08E51F, 0xE7FF0116);
	r3 = D(r3, s1_2_0, 0xFDFE02FF, 0x05F7FF05, 0x10000201, 0xEEEFE8F4);
	r4 = D(r4, s1_2_0, 0xE40113EF, 0xEB001305, 0x8DF2FCF5, 0xEEFF0BFB);
	r5 = D(r5, s1_2_0, 0xAEDDFAEF, 0xFD0DF6FA, 0xC1242BDF, 0xD701FBD1);
	r6 = D(r6, s1_2_0, 0xC507F8ED, 0x0DFD00F8, 0x03020205, 0x010301FD);
	r7 = D(r7, s1_2_0, 0x0C04FD08, 0xEFFFFFF6, 0x020201FB, 0x120B1BFE);
	r0 = D(r0, s1_2_1, 0xDF1115E3, 0x10F70208, 0x09FBFA0F, 0x170D16F2);
	r1 = D(r1, s1_2_1, 0x180B0310, 0x0D1FF305, 0xFA16FEEF, 0x20E91629);
	r2 = D(r2, s1_2_1, 0xD00E1213, 0xDCFD00FC, 0x2544E813, 0xE5FDE804);
	r3 = D(r3, s1_2_1, 0x000100F6, 0xFE02EBEA, 0xFB0606F2, 0x040104FE);
	r4 = D(r4, s1_2_1, 0x2FF514EC, 0xE5DEFAE0, 0xC001F211, 0x00FF04FE);
	r5 = D(r5, s1_2_1, 0x20DA0F0F, 0x0FE611EF, 0xBE23E9F8, 0xE9F8FCE0);
	r6 = D(r6, s1_2_1, 0xFFFC020C, 0x01F905EC, 0x01FCFF05, 0x00FD0105);
	r7 = D(r7, s1_2_1, 0xFCFC110B, 0xF7F000FD, 0x01FBFF00, 0xE9FEFF09);
	r0 = D(r0, s1_2_2, 0xF7FD05DA, 0xE502FA00, 0x0A0AFCFE, 0xFA1407F7);
	r1 = D(r1, s1_2_2, 0xF7190007, 0x02FA0AFA, 0x0BFDFE01, 0x0AF00509);
	r2 = D(r2, s1_2_2, 0xBF1C18C2, 0xECDC0D0F, 0xD7ED01F1, 0xE1EFFAF1);
	r3 = D(r3, s1_2_2, 0x0404FDFC, 0xF0080001, 0xECF40802, 0xDE2A19FB);
	r4 = D(r4, s1_2_2, 0xCA0228F8, 0xD0C413F2, 0xE814F6DD, 0xFF140A0A);
	r5 = D(r5, s1_2_2, 0xC420F6D8, 0xF31AFC0E, 0xBC811981, 0xFAF406F7);
	r6 = D(r6, s1_2_2, 0xF5FD0027, 0x0D080304, 0x0202FEFE, 0xFEFC0001);
	r7 = D(r7, s1_2_2, 0x02FFFF03, 0x0DEFFCF9, 0x000202FE, 0x0803EBF4);
	s0_0_0 = G[6][xy.y+0][xy.x+0]; s0_0_1 = G[6][xy.y+0][xy.x+1];
	s0_0_2 = G[6][xy.y+0][xy.x+2]; s0_1_0 = G[6][xy.y+1][xy.x+0];
	s0_1_1 = G[6][xy.y+1][xy.x+1]; s0_1_2 = G[6][xy.y+1][xy.x+2];
	s0_2_0 = G[6][xy.y+2][xy.x+0]; s0_2_1 = G[6][xy.y+2][xy.x+1];
	s0_2_2 = G[6][xy.y+2][xy.x+2]; s1_0_0 = G[7][xy.y+0][xy.x+0];
	s1_0_1 = G[7][xy.y+0][xy.x+1]; s1_0_2 = G[7][xy.y+0][xy.x+2];
	s1_1_0 = G[7][xy.y+1][xy.x+0]; s1_1_1 = G[7][xy.y+1][xy.x+1];
	s1_1_2 = G[7][xy.y+1][xy.x+2]; s1_2_0 = G[7][xy.y+2][xy.x+0];
	s1_2_1 = G[7][xy.y+2][xy.x+1]; s1_2_2 = G[7][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x051AD9FD, 0x1D06EAE4, 0xEFBAF9F9, 0x1202FD00);
	r1 = D(r1, s0_0_0, 0x03FFF5FE, 0x06F7FCFB, 0xFCF70306, 0xFCE3FE07);
	r2 = D(r2, s0_0_0, 0xF917BF11, 0xE4FEEC02, 0xEF06F507, 0xF8FB0F0A);
	r3 = D(r3, s0_0_0, 0xFEFC0203, 0xEADAF5F7, 0xF8FEF904, 0x08F91803);
	r4 = D(r4, s0_0_0, 0xEEF80E09, 0xECE7F0E5, 0x221A1F13, 0x0F02F9FC);
	r5 = D(r5, s0_0_0, 0xF7EF21F0, 0xFDF404DC, 0xEB0CF3EB, 0x2D8100EE);
	r6 = D(r6, s0_0_0, 0x1AF903F5, 0xFF01FF07, 0x02020001, 0x0200F800);
	r7 = D(r7, s0_0_0, 0x03E6FD04, 0xF5E20204, 0xFDEEFBFF, 0x26BD13EB);
	r0 = D(r0, s0_0_1, 0xEB81ECF9, 0x0F1E260A, 0xD3F5E2F4, 0xFDF7E6FD);
	r1 = D(r1, s0_0_1, 0xF9FCEB07, 0x0610FDFD, 0xFFFA0503, 0xF90CF40C);
	r2 = D(r2, s0_0_1, 0x1C8B07D0, 0x0581D504, 0xCEFF81D7, 0x11AF1D16);
	r3 = D(r3, s0_0_1, 0xFCF202FD, 0x0D12EFEB, 0xEDFE0808, 0x0CFDE60A);
	r4 = D(r4, s0_0_1, 0xF0E90FF1, 0xF7E03421, 0xFCF6000C, 0x0B141A02);
	r5 = D(r5, s0_0_1, 0xFFE3F200, 0xFD830DEE, 0xF0030014, 0xF7CE1800);
	r6 = D(r6, s0_0_1, 0x03F60300, 0xFC1FF206, 0xFD4F0202, 0x0509FFFF);
	r7 = D(r7, s0_0_1, 0x03D30301, 0x0AB9060C, 0x09F5F901, 0x09F3EA1E);
	r0 = D(r0, s0_0_2, 0xA6D209CA, 0x1AFA06EB, 0xFEFF1409, 0x37FE2F1A);
	r1 = D(r1, s0_0_2, 0x02FBFD02, 0xFF030EFB, 0x04F60201, 0xFBEF0810);
	r2 = D(r2, s0_0_2, 0xF0DBF735, 0x01F5030D, 0xEA1AE02A, 0x0A030E03);
	r3 = D(r3, s0_0_2, 0xFD0302FE, 0x08FAFF00, 0xFC01FFFE, 0xF9F1060D);
	r4 = D(r4, s0_0_2, 0xF7F4FD0F, 0x06070AD5, 0x110C1730, 0x05FB0005);
	r5 = D(r5, s0_0_2, 0x080CF503, 0x03F012AB, 0xBEFB81FB, 0xF6EEFE04);
	r6 = D(r6, s0_0_2, 0x03000105, 0xFC040D00, 0x011AFB06, 0x01FEFD00);
	r7 = D(r7, s0_0_2, 0x09F812FD, 0xF8060905, 0xFDF70705, 0xFFF10609);
	r0 = D(r0, s0_1_0, 0x11FDFCF6, 0x06FBE00C, 0xD8F20713, 0x2100F20E);
	r1 = D(r1, s0_1_0, 0xF31AF705, 0x02ED0503, 0xFD1D0701, 0x03E5F7E1);
	r2 = D(r2, s0_1_0, 0x0D030108, 0x2008EBED, 0x05EEF3D5, 0x061910FE);
	r3 = D(r3, s0_1_0, 0xFFEFFEFD, 0xF3F4F60E, 0x0A15FF01, 0x34020AEF);
	r4 = D(r4, s0_1_0, 0xF40C0CF7, 0x1604F5EC, 0xEA0511F6, 0x23EC01F3);
	r5 = D(r5, s0_1_0, 0xCFF6170B, 0x08060F10, 0x05EF0A11, 0xFBFFEF01);
	r6 = D(r6, s0_1_0, 0x1CDEF60B, 0xFE060702, 0x00FF01FF, 0x01050503);
	r7 = D(r7, s0_1_0, 0x00F40704, 0xF4010F03, 0x00F90204, 0xFF0C0EF2);
	r0 = D(r0, s0_1_1, 0x08DE1906, 0xE3F7E90B, 0xE6E6F800, 0x08201424);
	r1 = D(r1, s0_1_1, 0x03F1EDFB, 0x07040AF4, 0xE6E60C1E, 0xDD340931);
	r2 = D(r2, s0_1_1, 0x2FB305FC, 0x13FF0103, 0x18FBF708, 0x0BCA0C25);
	r3 = D(r3, s0_1_1, 0x080E070A, 0x1C0B00F9, 0x28E10F04, 0x01E91100);
	r4 = D(r4, s0_1_1, 0xF3DF0112, 0x11D8C5F6, 0xFCE7D9BA, 0x03FFF7C6);
	r5 = D(r5, s0_1_1, 0xEA192401, 0xF301DCE9, 0x0F1F2EEC, 0xFEF401FE);
	r6 = D(r6, s0_1_1, 0x1AFE12F7, 0x03FD0B0D, 0x05FE05FC, 0xEDFFFDF1);
	r7 = D(r7, s0_1_1, 0x0821EC0B, 0xF0F4F801, 0xFD02FCFA, 0x01F31620);
	r0 = D(r0, s0_1_2, 0x5318E498, 0x04070D17, 0xDA1DDBF6, 0xD7EFFFD0);
	r1 = D(r1, s0_1_2, 0x10F506F3, 0x04F203F8, 0x07FCF9EF, 0x08EDEFE5);
	r2 = D(r2, s0_1_2, 0x080BE6DF, 0x19FD14E1, 0x24FFF617, 0x0611F5E6);
	r3 = D(r3, s0_1_2, 0x06030200, 0x15FEEBFF, 0x050C02FE, 0x07FDE306);
	r4 = D(r4, s0_1_2, 0x00CCE5F6, 0xE1F21E11, 0xD107D3F3, 0x10F706F6);
	r5 = D(r5, s0_1_2, 0xEB160EFE, 0x50FFFAD2, 0xE3EA1BBE, 0xFCFE0AE8);
	r6 = D(r6, s0_1_2, 0xFE100104, 0x020602FE, 0xFCFE0205, 0xFBFE0206);
	r7 = D(r7, s0_1_2, 0x0F01FE08, 0xF0FA02FA, 0x03000502, 0x13FCF5EC);
	r0 = D(r0, s0_2_0, 0xFD0DFDEF, 0x090009FF, 0xF7FD0CF5, 0xF8F91100);
	r1 = D(r1, s0_2_0, 0x0BFD09F7, 0xFB0A0207, 0xFD010302, 0x0BEBF801);
	r2 = D(r2, s0_2_0, 0xBD01FA16, 0x040514EF, 0x1EFD0EFE, 0x0609FDEE);
	r3 = D(r3, s0_2_0, 0x00020204, 0xE20DFC06, 0xF909F604, 0xFDE7FE18);
	r4 = D(r4, s0_2_0, 0x18F0EAFA, 0x080A0EEB, 0xFA14EC1A, 0xFF0306ED);
	r5 = D(r5, s0_2_0, 0x09E4ECE9, 0xFFECD20C, 0xF30CF10A, 0x030200F5);
	r6 = D(r6, s0_2_0, 0xFDF10E0E, 0xFD00FFFF, 0x0200FFFF, 0x000101FE);
	r7 = D(r7, s0_2_0, 0x00020300, 0xFE060708, 0x0000FEFF, 0x00050F0E);
	r0 = D(r0, s0_2_1, 0x00F800FB, 0x080208EC, 0xF4160202, 0xF609F9EE);
	r1 = D(r1, s0_2_1, 0xF6FEFE06, 0xFBF8FF0C, 0xFFFEF8FB, 0xF2F8F1F5);
	r2 = D(r2, s0_2_1, 0x0BE3DC1C, 0xF9FFF8FE, 0xF70311F8, 0x04EB0EED);
	r3 = D(r3, s0_2_1, 0x0101FA00, 0x05F7F9FC, 0xFBF8FE0B, 0xF71809F9);
	r4 = D(r4, s0_2_1, 0x0BF1EA00, 0x06F81841, 0x0CFCFBF7, 0xF3F60401);
	r5 = D(r5, s0_2_1, 0xF914DC07, 0xC7EE002C, 0xF62B02FB, 0x14FF0908);
	r6 = D(r6, s0_2_1, 0x08141107, 0x0CFDFE05, 0xFE0002FF, 0xFFFE0504);
	r7 = D(r7, s0_2_1, 0xFA010306, 0xF4F70A08, 0x02020302, 0x2007FEF5);
	r0 = D(r0, s0_2_2, 0xEF0126EF, 0x0A02090A, 0xFDF0190B, 0x19010001);
	r1 = D(r1, s0_2_2, 0xF505F90B, 0xF0FB02FE, 0xF9000608, 0x01040008);
	r2 = D(r2, s0_2_2, 0xDDFCF7E7, 0xF5FBE418, 0x1900E611, 0xED0B00F1);
	r3 = D(r3, s0_2_2, 0xFF01FEFF, 0xF5FC0501, 0x0507F9FB, 0x00F20E0F);
	r4 = D(r4, s0_2_2, 0x030D1117, 0x1B0EFBF2, 0x0A0604DF, 0x01040BF8);
	r5 = D(r5, s0_2_2, 0xEB06BCEB, 0xFC0F1513, 0x31ED0881, 0x0901FCFD);
	r6 = D(r6, s0_2_2, 0x100202F2, 0x0502FE05, 0x0001FEFD, 0x0300FF00);
	r7 = D(r7, s0_2_2, 0x0AFFF6FE, 0xFE03FD00, 0x02FE0100, 0xF6010105);
	r0 = D(r0, s1_0_0, 0x06F00616, 0xF9C60C03, 0x120DFAF3, 0x10030201);
	r1 = D(r1, s1_0_0, 0x0BF401F7, 0xF80105FC, 0x1B00F601, 0x20E102FF);
	r2 = D(r2, s1_0_0, 0x10F4FAFB, 0xF90AF4FD, 0xF2F0F0FF, 0xFCE6ECF4);
	r3 = D(r3, s1_0_0, 0xFC0500FF, 0x01EF04F0, 0x090BFF05, 0x13E2FE08);
	r4 = D(r4, s1_0_0, 0xFB06FBFD, 0xD3F9001C, 0xE007FBF6, 0xF8EBFDD5);
	r5 = D(r5, s1_0_0, 0x2CFDFCE2, 0xCD0DF8EA, 0x350B060F, 0xDAFEF819);
	r6 = D(r6, s1_0_0, 0x05FC0603, 0x0E140C0A, 0xFF0C0201, 0xF2F901FF);
	r7 = D(r7, s1_0_0, 0x190FFF16, 0x11FEF800, 0x00FFFBFF, 0x21F9FA04);
	r0 = D(r0, s1_0_1, 0xA2F8E9EB, 0xF3E5B411, 0xFCFEFDF7, 0xFFEAFAF7);
	r1 = D(r1, s1_0_1, 0xFFF809F4, 0x0E0905FE, 0xF304FFFC, 0x03EF06EF);
	r2 = D(r2, s1_0_1, 0x2C9FFFD9, 0x16FCF1EC, 0x2B0AF4EE, 0xE4001BFE);
	r3 = D(r3, s1_0_1, 0xFE080204, 0x0C2BFF0E, 0x0308F9FA, 0x09F4F0FF);
	r4 = D(r4, s1_0_1, 0xFA01ECF9, 0x9A082CE0, 0xFB210513, 0xFCFAEEF4);
	r5 = D(r5, s1_0_1, 0xEDFDFDFD, 0xF4F51005, 0xE8FDD8F3, 0xDA040E1B);
	r6 = D(r6, s1_0_1, 0xEA02F9EF, 0xFC0D0905, 0x0B04FF02, 0xFDF8FF01);
	r7 = D(r7, s1_0_1, 0x0B0C0121, 0x050D07FC, 0x0CFF00FC, 0xF00207EF);
	r0 = D(r0, s1_0_2, 0xE1D6FE81, 0x06FFE6FC, 0xF70F010E, 0xF1071300);
	r1 = D(r1, s1_0_2, 0xF5FF0709, 0x02F80906, 0xF2000905, 0x05D60606);
	r2 = D(r2, s1_0_2, 0x2EEB1CFA, 0x06FE090D, 0x59CC0706, 0xF5FC010C);
	r3 = D(r3, s1_0_2, 0x04FFFEFF, 0xEA03FDF8, 0xEE080200, 0x0DFFFFEC);
	r4 = D(r4, s1_0_2, 0xFBEF100A, 0xE7161030, 0xDAABF807, 0xF9FAEAED);
	r5 = D(r5, s1_0_2, 0xE60BD800, 0xFD0BFFF7, 0x4B1DF40B, 0xF401ECFD);
	r6 = D(r6, s1_0_2, 0x09E5000D, 0x03F20106, 0x09FCFCFC, 0x030001FD);
	r7 = D(r7, s1_0_2, 0x0600FA01, 0x08F70FFC, 0x02070101, 0xF4E31CFF);
	r0 = D(r0, s1_1_0, 0x0A0BFF04, 0x0A09190B, 0xEE0FF6F4, 0x0F110403);
	r1 = D(r1, s1_1_0, 0x020FFBE5, 0x051102FA, 0x06EEF60B, 0xCFF60DF1);
	r2 = D(r2, s1_1_0, 0x1637F704, 0x04CBFC10, 0x0CF3BAF6, 0x15F6EDE9);
	r3 = D(r3, s1_1_0, 0x03E8FBFF, 0x02AB0913, 0x04C1F3F2, 0x07E50D0F);
	r4 = D(r4, s1_1_0, 0xFEF7F904, 0x1801D301, 0x0F0E27EF, 0x28070DAE);
	r5 = D(r5, s1_1_0, 0x0EC91E34, 0x0DDECD01, 0xD2BF16E3, 0x1B0414F8);
	r6 = D(r6, s1_1_0, 0x1F070FF6, 0xF8070707, 0x03F802FE, 0xFC1A04FA);
	r7 = D(r7, s1_1_0, 0xF8091035, 0xFC0709F4, 0xFA02FBFB, 0xF11BED0D);
	r0 = D(r0, s1_1_1, 0x0F220318, 0xF7F1BDF1, 0x0CFC05F9, 0xE91AF8F8);
	r1 = D(r1, s1_1_1, 0xFD081705, 0x0000FF32, 0x06110EF7, 0x0909E7F3);
	r2 = D(r2, s1_1_1, 0xE9FCED16, 0x07000EFB, 0x42D76DF7, 0x06FAFF3A);
	r3 = D(r3, s1_1_1, 0xFFEE0403, 0x09EA1A01, 0x01250B0E, 0x1504F9F8);
	r4 = D(r4, s1_1_1, 0x08ED080E, 0x33DE38D8, 0xFB2DEA18, 0x0A1406D9);
	r5 = D(r5, s1_1_1, 0x04FFCC1C, 0x060F20D5, 0xE717E314, 0xFFF20BF5);
	r6 = D(r6, s1_1_1, 0xE9EF312D, 0xF9F2FEF1, 0x03F70100, 0xFD08F606);
	r7 = D(r7, s1_1_1, 0xF9020671, 0x08F31D02, 0x09FD0A06, 0xE4F0FC2A);
	r0 = D(r0, s1_1_2, 0x18C7F20A, 0x1E04AB0D, 0x25E9FF02, 0xEE10050C);
	r1 = D(r1, s1_1_2, 0x03E60206, 0x11FF0804, 0xFE07FFFC, 0x0107E706);
	r2 = D(r2, s1_1_2, 0xE74BEEFD, 0xF9070404, 0x3804FAF2, 0x14F903FE);
	r3 = D(r3, s1_1_2, 0x00020000, 0x0102EE06, 0x0F0BFA07, 0xF5F9E106);
	r4 = D(r4, s1_1_2, 0x1EF212F4, 0x15160E0E, 0x4423F603, 0x01FF0BFE);
	r5 = D(r5, s1_1_2, 0xCE0605E4, 0xF711111F, 0x2D2DEA0D, 0x06FE06ED);
	r6 = D(r6, s1_1_2, 0xF5E41CF0, 0xF715FEF6, 0x0104FE01, 0x03F50404);
	r7 = D(r7, s1_1_2, 0x05F6F919, 0x110128F9, 0x01020E02, 0x0418EAF2);
	r0 = D(r0, s1_2_0, 0xF30817F9, 0x04F901F8, 0xF31AF609, 0xF80012FB);
	r1 = D(r1, s1_2_0, 0xF9F9F6F6, 0xF7F9FBF7, 0xF903F005, 0x26130D04);
	r2 = D(r2, s1_2_0, 0x50C72020, 0x02FF03FC, 0xF7F6D90E, 0xFCE7FAF5);
	r3 = D(r3, s1_2_0, 0xF5FF02FA, 0x05A1EFF2, 0xF9DBFFF1, 0x0FE813F5);
	r4 = D(r4, s1_2_0, 0x05000A09, 0xCA0BDA05, 0xD009EB03, 0xF8F50000);
	r5 = D(r5, s1_2_0, 0xE00CC8F8, 0x1B0F0623, 0x211E0112, 0x0C0201FA);
	r6 = D(r6, s1_2_0, 0xFB25F0FF, 0xF2FE03F4, 0xFD0101FD, 0x09FF0602);
	r7 = D(r7, s1_2_0, 0xF200F830, 0xEE050401, 0xFF02FAFE, 0xFEEFE80B);
	r0 = D(r0, s1_2_1, 0x12F2F9EC, 0xDA011AF5, 0xF2F50B03, 0xF5D3F21B);
	r1 = D(r1, s1_2_1, 0x0B00C90E, 0x0E06D8E7, 0x12F9F2F6, 0x200BD815);
	r2 = D(r2, s1_2_1, 0x24EEE4F8, 0x1101FF02, 0x1721FA0F, 0x08FE2FFC);
	r3 = D(r3, s1_2_1, 0x020401FE, 0x03F7D305, 0xF90EF009, 0x1F81CA01);
	r4 = D(r4, s1_2_1, 0x0C01E7F4, 0xF4EE0ED7, 0xF6DB40E6, 0xFD0FFC03);
	r5 = D(r5, s1_2_1, 0xD406670F, 0x2CE5E6F7, 0xC1EB81F5, 0xF7FDF2FB);
	r6 = D(r6, s1_2_1, 0xDE1907FF, 0x04F0EE05, 0xFD070201, 0xFA01F800);
	r7 = D(r7, s1_2_1, 0x0EFBFF4A, 0x0900EA03, 0x03FC0C01, 0xEB150CF3);
	r0 = D(r0, s1_2_2, 0xCA1FECC7, 0xF4F8E202, 0x0EFDF903, 0x0BF1F1F0);
	r1 = D(r1, s1_2_2, 0xFCFEF407, 0x07F1CCF9, 0xFE010706, 0x1317D80B);
	r2 = D(r2, s1_2_2, 0xFAEF05F7, 0xF0FAFEFA, 0xF2190B0D, 0xED0F2BF6);
	r3 = D(r3, s1_2_2, 0xFD020103, 0xF01AEFFA, 0x06FE06FF, 0x0206D907);
	r4 = D(r4, s1_2_2, 0x26F8EAFD, 0xED212B20, 0xE909070C, 0xEFF600E8);
	r5 = D(r5, s1_2_2, 0xF7E1E3F1, 0x0C07FE08, 0x21EDE327, 0x0DF6FBFF);
	r6 = D(r6, s1_2_2, 0xE61905F7, 0x08FCFF00, 0xFE00F503, 0x04FCFAFD);
	r7 = D(r7, s1_2_2, 0xFCFBFD22, 0x02F3F410, 0xFB011202, 0xFA082BF8);
	f0 = vec4(r0) * 6.2000124e-05;
	f0 += vec4(1.935e-02, -2.260e-02, 5.035e-02, -2.461e-02);
	f0 = clamp(f0, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 0), f0);
	f1 = vec4(r1) * 6.2000124e-05;
	f1 += vec4(-3.299e-02, 2.997e-02, 1.143e-02, 6.339e-03);
	f1 = clamp(f1, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 0), f1);
	f2 = vec4(r2) * 6.2000124e-05;
	f2 += vec4(1.122e-02, -3.406e-02, -2.918e-02, -1.182e-02);
	f2 = clamp(f2, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 1), f2);
	f3 = vec4(r3) * 6.2000124e-05;
	f3 += vec4(7.064e-03, -5.620e-02, 2.399e-02, 1.791e-02);
	f3 = clamp(f3, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 1), f3);
	f4 = vec4(r4) * 6.2000124e-05;
	f4 += vec4(2.265e-02, -1.939e-02, -1.308e-02, -3.546e-02);
	f4 = clamp(f4, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 0), f4);
	f5 = vec4(r5) * 6.2000124e-05;
	f5 += vec4(-2.985e-02, 1.304e-02, -4.201e-02, 8.131e-03);
	f5 = clamp(f5, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 0), f5);
	f6 = vec4(r6) * 6.2000124e-05;
	f6 += vec4(-2.544e-02, 1.221e-02, 1.345e-02, 1.886e-03);
	f6 = clamp(f6, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 1), f6);
	f7 = vec4(r7) * 6.2000124e-05;
	f7 += vec4(-4.542e-01, 2.989e-02, -2.839e-03, 4.657e-03);
	f7 = clamp(f7, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 1), f7);
}

//!DESC [CuNNy_8x32_DS_vk] -conv3
//!HOOK LUMA
//!COMPUTE 32 16 8 8
//!BIND conv2
//!BIND LUMA
//!SAVE conv3
//!WIDTH LUMA.w 4 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_spirv_intrinsics : require
spirv_instruction (extensions = ["SPV_KHR_integer_dot_product"], capabilities = [6019, 6018], id = 4450)
int dp4(int a, int b, spirv_literal int fmt);
#define D(r, s, a, b, c, d) r + ivec4(dp4(s, a, 0), dp4(s, b, 0), dp4(s, c, 0), dp4(s, d, 0))
shared int G[8][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(4, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			vec2 p;
			vec4 r, g, b, a;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(1, 1)) * conv2_pt;
			r = conv2_gather(p, 0);
			g = conv2_gather(p, 1);
			b = conv2_gather(p, 2);
			a = conv2_gather(p, 3);
			vec4 v0 = vec4(r.w, g.w, b.w, a.w) * 1.0000000e+00;
			vec4 v1 = vec4(r.z, g.z, b.z, a.z) * 1.0000000e+00;
			vec4 v2 = vec4(r.x, g.x, b.x, a.x) * 1.0000000e+00;
			vec4 v3 = vec4(r.y, g.y, b.y, a.y) * 1.0000000e+00;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(3, 1)) * conv2_pt;
			r = conv2_gather(p, 0);
			g = conv2_gather(p, 1);
			b = conv2_gather(p, 2);
			a = conv2_gather(p, 3);
			vec4 v4 = vec4(r.w, g.w, b.w, a.w) * 1.0000000e+00;
			vec4 v5 = vec4(r.z, g.z, b.z, a.z) * 1.0000000e+00;
			vec4 v6 = vec4(r.x, g.x, b.x, a.x) * 1.0000000e+00;
			vec4 v7 = vec4(r.y, g.y, b.y, a.y) * 1.0000000e+00;
			G[0][ay][ax] = int(packSnorm4x8(v0));
			G[1][ay][ax] = int(packSnorm4x8(v1));
			G[2][ay][ax] = int(packSnorm4x8(v2));
			G[3][ay][ax] = int(packSnorm4x8(v3));
			G[4][ay][ax] = int(packSnorm4x8(v4));
			G[5][ay][ax] = int(packSnorm4x8(v5));
			G[6][ay][ax] = int(packSnorm4x8(v6));
			G[7][ay][ax] = int(packSnorm4x8(v7));
		}
	}
	barrier();
	int s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;
	ivec4 r0, r1, r2, r3, r4, r5, r6, r7;
	vec4 f0, f1, f2, f3, f4, f5, f6, f7;
	r0 = ivec4(0); r1 = ivec4(0); r2 = ivec4(0); r3 = ivec4(0); r4 = ivec4(0); r5 = ivec4(0); r6 = ivec4(0); r7 = ivec4(0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2]; s1_0_0 = G[1][xy.y+0][xy.x+0];
	s1_0_1 = G[1][xy.y+0][xy.x+1]; s1_0_2 = G[1][xy.y+0][xy.x+2];
	s1_1_0 = G[1][xy.y+1][xy.x+0]; s1_1_1 = G[1][xy.y+1][xy.x+1];
	s1_1_2 = G[1][xy.y+1][xy.x+2]; s1_2_0 = G[1][xy.y+2][xy.x+0];
	s1_2_1 = G[1][xy.y+2][xy.x+1]; s1_2_2 = G[1][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x818181A8, 0xFEF903A9, 0x04F6FA05, 0x0E00ED3D);
	r1 = D(r1, s0_0_0, 0x06FEFE05, 0xFB0700EB, 0xF5FDF5FD, 0xF7F8FEFB);
	r2 = D(r2, s0_0_0, 0x02F8D4BB, 0x08F2F7E4, 0x0105031D, 0xF1E4180B);
	r3 = D(r3, s0_0_0, 0x12E90ED9, 0x001A02D9, 0xFCFA01F0, 0x03FEF62D);
	r4 = D(r4, s0_0_0, 0x1E000D89, 0xF90D2020, 0x0BFDF7FF, 0xFA010011);
	r5 = D(r5, s0_0_0, 0x1AFF00FC, 0x0103FC20, 0x06010207, 0x19F7FDDB);
	r6 = D(r6, s0_0_0, 0xFD15FBD5, 0x00010306, 0x1C1000FC, 0x020000FA);
	r7 = D(r7, s0_0_0, 0xFDF7F824, 0x12FFF20A, 0xFCF00004, 0xFB01E8E3);
	r0 = D(r0, s0_0_1, 0x0AF509FF, 0xC2C5F181, 0x0ECD1906, 0xFE0E0EF5);
	r1 = D(r1, s0_0_1, 0x02000701, 0xFF0F1004, 0xFA020204, 0xF20E0B03);
	r2 = D(r2, s0_0_1, 0xFF15F7F7, 0x0614050A, 0x0804FB00, 0xF41A01FF);
	r3 = D(r3, s0_0_1, 0x0404FA0C, 0xF6310E07, 0x061002F8, 0x010A0008);
	r4 = D(r4, s0_0_1, 0xFB0A0800, 0x0A2B01EB, 0x0D05040E, 0xF103DFF2);
	r5 = D(r5, s0_0_1, 0x0C0105D9, 0x0604FE03, 0x05ED0DF5, 0x05010218);
	r6 = D(r6, s0_0_1, 0x0A070FFC, 0x01FF0203, 0x0703FD0E, 0x00FCFFFD);
	r7 = D(r7, s0_0_1, 0x04F703F1, 0x0CFA0614, 0x0801FE04, 0x06FEFDF8);
	r0 = D(r0, s0_0_2, 0x08F3F60D, 0x00E0BAFD, 0xE6F8F3C0, 0xBC81B481);
	r1 = D(r1, s0_0_2, 0x05FBFD03, 0x07F0FD06, 0xFCF90407, 0xFEFA0501);
	r2 = D(r2, s0_0_2, 0xFC08E806, 0x04F4FA09, 0xFEFCF403, 0x0BCFF110);
	r3 = D(r3, s0_0_2, 0x05FFFBFE, 0x03DC15F9, 0xFE03FFFE, 0x0009F9FE);
	r4 = D(r4, s0_0_2, 0xFEF313FF, 0x00040001, 0x08FC0009, 0xF6F22503);
	r5 = D(r5, s0_0_2, 0xFB08FF07, 0x00FC0002, 0x0404FE02, 0x02EE0F06);
	r6 = D(r6, s0_0_2, 0x0AE7F106, 0xFF020100, 0x0BF1070C, 0x02000100);
	r7 = D(r7, s0_0_2, 0xFBFDF7FB, 0x00F713FE, 0xFFF80906, 0xFDFD0B02);
	r0 = D(r0, s0_1_0, 0xF940FFF7, 0x123D231E, 0x17191681, 0xFE04F80B);
	r1 = D(r1, s0_1_0, 0xFB02060B, 0x1A1C077F, 0xF416FB81, 0xFA02F8AB);
	r2 = D(r2, s0_1_0, 0xF218D128, 0x0AFE0EF1, 0xFEF60381, 0x911A1F43);
	r3 = D(r3, s0_1_0, 0xFBE7EB3A, 0xFEFF0ECE, 0x080111DE, 0x05FBF901);
	r4 = D(r4, s0_1_0, 0xDEFB195A, 0x1CB4F281, 0x32F2EEFB, 0xFDF8FF38);
	r5 = D(r5, s0_1_0, 0x14FF0BD2, 0xFDFE04F6, 0x28DF0D5E, 0x030BF82C);
	r6 = D(r6, s0_1_0, 0x110FDB8F, 0xFE01FDEE, 0x16F60AA8, 0x01010213);
	r7 = D(r7, s0_1_0, 0x01FBF8E1, 0x13F2058D, 0x0306FB71, 0x0AF6F6E1);
	r0 = D(r0, s0_1_1, 0xFA071AFD, 0x9CE2243C, 0x12E319F7, 0x0EF1FD13);
	r1 = D(r1, s0_1_1, 0xF903F5FF, 0x0000F61F, 0xF0F2E901, 0xFB051BE6);
	r2 = D(r2, s0_1_1, 0xEC03B51D, 0x0916EDFD, 0xFBFF18F8, 0x1ACC0DE9);
	r3 = D(r3, s0_1_1, 0x1C0AE1D7, 0x0D0403E0, 0xF5EC0BFE, 0x09FC0FF5);
	r4 = D(r4, s0_1_1, 0x0F06D6EC, 0x12E60FF4, 0x0C11EDFE, 0xFCFEFFA4);
	r5 = D(r5, s0_1_1, 0xFAE2FCC7, 0x00FEFBDC, 0xFD16EE0F, 0x11DE1004);
	r6 = D(r6, s0_1_1, 0x17F80BF9, 0x03020701, 0xF9ABEEF8, 0x01FEFD0B);
	r7 = D(r7, s0_1_1, 0x0300FEE1, 0xE906F804, 0x0BF7E411, 0x0700EEC3);
	r0 = D(r0, s0_1_2, 0x0205F9F8, 0xFF253422, 0xF4173414, 0x00C90A0C);
	r1 = D(r1, s0_1_2, 0x02070E02, 0x10FF0AFA, 0xF9FBF504, 0xFD05FA0C);
	r2 = D(r2, s0_1_2, 0x09FDE900, 0x030A0600, 0xFEF513FB, 0xFB05D503);
	r3 = D(r3, s0_1_2, 0x03010101, 0x040A1612, 0x0305F3FC, 0x0206FD04);
	r4 = D(r4, s0_1_2, 0xFA16F7FF, 0x04FAF006, 0x05FF1FF7, 0x05E5CC0B);
	r5 = D(r5, s0_1_2, 0xFA080509, 0x01FF0801, 0x02021AF8, 0x0A1F0AFF);
	r6 = D(r6, s0_1_2, 0x06EF15FB, 0x01FFFB04, 0x0905E808, 0x0304FF01);
	r7 = D(r7, s0_1_2, 0xFA090601, 0x000A03F6, 0x07EFEAF8, 0xF709F8FE);
	r0 = D(r0, s0_2_0, 0xFAF2E82A, 0xF2291681, 0x1812FA7F, 0x02FEF013);
	r1 = D(r1, s0_2_0, 0xFF06EBE8, 0x060011AD, 0xFCF9FAC3, 0xFAECFD7F);
	r2 = D(r2, s0_2_0, 0x0AF1E592, 0xFCF10799, 0x0DFFFBDD, 0xEDFEFD81);
	r3 = D(r3, s0_2_0, 0x0B01F12B, 0x11F507E0, 0x05F4F4CD, 0x05F3F6D3);
	r4 = D(r4, s0_2_0, 0x0ED21D66, 0x170FCB42, 0x07F815CB, 0x0400FC7F);
	r5 = D(r5, s0_2_0, 0x1BF5F86E, 0x00FFFE02, 0xFBFB2E36, 0x0809FA3F);
	r6 = D(r6, s0_2_0, 0x0C0FF669, 0x0502F91A, 0x1DEF07F0, 0xFF00030A);
	r7 = D(r7, s0_2_0, 0x04FDEAF8, 0x031E8168, 0xF807FC4E, 0xFCFFFD20);
	r0 = D(r0, s0_2_1, 0x09F2FA1C, 0xF0FFC9F1, 0x07CBFCE5, 0xFE04F70E);
	r1 = D(r1, s0_2_1, 0x000411FA, 0x0E021F00, 0xFEFE0F0F, 0xFE0A19FA);
	r2 = D(r2, s0_2_1, 0x01E4D208, 0x000105FA, 0xFC051A25, 0xD82F0018);
	r3 = D(r3, s0_2_1, 0xF5FAE5FA, 0x14F42803, 0x0AED0608, 0x060BC82C);
	r4 = D(r4, s0_2_1, 0x0BE2D1DF, 0x0601F500, 0x00E6E205, 0x04F70604);
	r5 = D(r5, s0_2_1, 0xF1FD06CB, 0xFF0303F8, 0x011206F7, 0x08F7DBDE);
	r6 = D(r6, s0_2_1, 0x13FBF409, 0x00FF1302, 0x12E52F1E, 0x02FDFE1F);
	r7 = D(r7, s0_2_1, 0x0405E4FF, 0x2105BDEF, 0x0701DBEE, 0xFF0D07E7);
	r0 = D(r0, s0_2_2, 0xFFFD0B10, 0xE3D2FADB, 0xF5F0CC08, 0x01FFF11E);
	r1 = D(r1, s0_2_2, 0x03FAFD00, 0x04061D0B, 0xFE06FBF9, 0x02F234FC);
	r2 = D(r2, s0_2_2, 0x05FBF60F, 0x050FFBFF, 0xFFF9EC08, 0xF500F4E2);
	r3 = D(r3, s0_2_2, 0x0005F3FB, 0x0CFB1D04, 0x00002406, 0xFEFEFBF4);
	r4 = D(r4, s0_2_2, 0xFCF00E0D, 0x050AF9FA, 0x0B02EDF9, 0x01FF21F6);
	r5 = D(r5, s0_2_2, 0xF51BC100, 0xFFFCFF02, 0x01060E01, 0x081B13FF);
	r6 = D(r6, s0_2_2, 0x06FA3010, 0xFDFD0D00, 0x0C04D9F4, 0x0201FE01);
	r7 = D(r7, s0_2_2, 0xFB040703, 0x05060209, 0x0406040E, 0x00F20B07);
	r0 = D(r0, s1_0_0, 0x81818181, 0xD1031102, 0xE911F6F6, 0xFF08FF01);
	r1 = D(r1, s1_0_0, 0xFDFFFA01, 0xFBEBE5F6, 0xF5EFDA00, 0x05FCFBFE);
	r2 = D(r2, s1_0_0, 0x020AE01D, 0xE9060904, 0x050BFBFD, 0xF7F9FE17);
	r3 = D(r3, s1_0_0, 0x090BFBFF, 0xF1090321, 0xFF06FE0C, 0x0900F803);
	r4 = D(r4, s1_0_0, 0xC708E703, 0x010005F8, 0xED00EBF4, 0xFFFF06F7);
	r5 = D(r5, s1_0_0, 0x08FFF116, 0xFDFB02FD, 0x09090E22, 0x030303FF);
	r6 = D(r6, s1_0_0, 0x10E61211, 0xFF0004FD, 0xDD0507F4, 0x00FF01FF);
	r7 = D(r7, s1_0_0, 0xF8020305, 0x0BEF0811, 0xFB02FAFA, 0x13101D10);
	r0 = D(r0, s1_0_1, 0x061B16C1, 0x0B0AE59B, 0xEFF73C23, 0x21020FF3);
	r1 = D(r1, s1_0_1, 0x06FE00FF, 0xFDF106CC, 0x16F615EE, 0xEE06FADD);
	r2 = D(r2, s1_0_1, 0x0D16DEFD, 0x16FAE601, 0xFDFCF107, 0x05FE04F9);
	r3 = D(r3, s1_0_1, 0x05EDDC11, 0xECF6DE0B, 0x09021216, 0xF507E404);
	r4 = D(r4, s1_0_1, 0x2FD7F82E, 0xFF19FA0A, 0xF10AFDE5, 0x08FF211B);
	r5 = D(r5, s1_0_1, 0xF2EDDA3A, 0x090F0D16, 0x07FE13F1, 0xF701EC14);
	r6 = D(r6, s1_0_1, 0xFB0B0BF4, 0x01FBFB01, 0x1DFF18EF, 0xFE0000FC);
	r7 = D(r7, s1_0_1, 0xFA00FB13, 0xDDF51EFB, 0x100024DF, 0x0F0A0E0E);
	r0 = D(r0, s1_0_2, 0x06F61516, 0xBFEE46A1, 0xE90EDD0F, 0x81818181);
	r1 = D(r1, s1_0_2, 0xF7050801, 0x0FFF1108, 0xF6F817F1, 0x020300E1);
	r2 = D(r2, s1_0_2, 0x110EE8DC, 0x01FD0AE5, 0xFE0503F6, 0x08EC10E6);
	r3 = D(r3, s1_0_2, 0xF308F4F8, 0xFC0B21F7, 0x0AF50117, 0xFBFEF700);
	r4 = D(r4, s1_0_2, 0xF5FD1FEB, 0xFE1BF804, 0x09FC14DA, 0xF90C2EFB);
	r5 = D(r5, s1_0_2, 0xF80402DB, 0xFB06F903, 0xEF0409EF, 0xED0415FC);
	r6 = D(r6, s1_0_2, 0xFCFAF411, 0x0404FB0A, 0xF7DF1804, 0x00FE01FD);
	r7 = D(r7, s1_0_2, 0xF0FBEB08, 0x1E17F423, 0x01F70A08, 0x03F1080C);
	r0 = D(r0, s1_1_0, 0x06E0F213, 0xEB0DF917, 0xF308EEF3, 0x06FDFF01);
	r1 = D(r1, s1_1_0, 0x0001F7FA, 0xEFF601E5, 0xFFE9FFFC, 0xFCFFF81E);
	r2 = D(r2, s1_1_0, 0x03E403FB, 0x040020FF, 0xF7FD06F2, 0xFBEA01E1);
	r3 = D(r3, s1_1_0, 0x0010FC08, 0x02F706FA, 0x0CECF709, 0xF0080E00);
	r4 = D(r4, s1_1_0, 0xFEEB0EF6, 0x11F5D902, 0x03FD12EE, 0x010CF100);
	r5 = D(r5, s1_1_0, 0x1CF611E4, 0xFCFEF4F8, 0xECE203FD, 0xED200303);
	r6 = D(r6, s1_1_0, 0xE1CC0900, 0xFFFD0603, 0xFA140BFE, 0xFF010102);
	r7 = D(r7, s1_1_0, 0x0E05FA02, 0xEB0F280C, 0x06FD0500, 0xFFFE0604);
	r0 = D(r0, s1_1_1, 0x0036E910, 0x0FF6DD03, 0xF7DFE105, 0x19112818);
	r1 = D(r1, s1_1_1, 0x020502F2, 0xFAF3E922, 0x0204F8EF, 0x110410FF);
	r2 = D(r2, s1_1_1, 0x1F221310, 0xFD28EEF4, 0x00F3050A, 0x1538F3F7);
	r3 = D(r3, s1_1_1, 0x0609190D, 0xF115FB1D, 0xF6FC1203, 0x0BFBE1F1);
	r4 = D(r4, s1_1_1, 0xD8D3E94A, 0xE4F608A1, 0xFCE80305, 0xFFEBED10);
	r5 = D(r5, s1_1_1, 0xF61A0ED9, 0x03110F02, 0x17F70FFD, 0xEB36FEFA);
	r6 = D(r6, s1_1_1, 0x15D706DF, 0x0219F805, 0x00F7C6FE, 0xFE12FDFF);
	r7 = D(r7, s1_1_1, 0x09FB1A04, 0xBF3802F5, 0x12071C04, 0x0AE20AEE);
	r0 = D(r0, s1_1_2, 0xFF04010E, 0x00C4101B, 0x1ADFCB1C, 0x0500F00A);
	r1 = D(r1, s1_1_2, 0x070A0013, 0xEF01FA0A, 0xFE0006FA, 0x03FA14E9);
	r2 = D(r2, s1_1_2, 0x06190CEA, 0x0303FBF7, 0xF8FF0312, 0xFBB40714);
	r3 = D(r3, s1_1_2, 0x09CD0BFA, 0x0ACCF320, 0x040C00FF, 0x03FCF90E);
	r4 = D(r4, s1_1_2, 0x01FCE5F4, 0x030AEF1C, 0x0AFEF6F0, 0xFD07F5ED);
	r5 = D(r5, s1_1_2, 0x090AEAEF, 0xFEF903FB, 0xF21101FA, 0x0CF8F1F1);
	r6 = D(r6, s1_1_2, 0x10DAF8DD, 0xFEFE05F8, 0xF8F8F213, 0x03FDFC0B);
	r7 = D(r7, s1_1_2, 0xFB03F9E9, 0x2905FB18, 0xF4F104FE, 0xFF0718F0);
	r0 = D(r0, s1_2_0, 0x09070403, 0x20F6F906, 0x01ECEB03, 0xFE01F9F9);
	r1 = D(r1, s1_2_0, 0x06FC0705, 0x02030800, 0x06F205FC, 0xFBFDFD15);
	r2 = D(r2, s1_2_0, 0x07F807FE, 0x0302FDFB, 0x080305FC, 0x00F521FA);
	r3 = D(r3, s1_2_0, 0xFD0607F2, 0x010C0006, 0xE40BECFD, 0x02071904);
	r4 = D(r4, s1_2_0, 0xE30C0804, 0xFF0E0D05, 0x00FBDE11, 0x070FF712);
	r5 = D(r5, s1_2_0, 0xF308FEF9, 0xFFFFFD00, 0x0407F606, 0x120E11FA);
	r6 = D(r6, s1_2_0, 0xEB0BF2F5, 0x0203FC00, 0x17FA17F9, 0xFFFF0200);
	r7 = D(r7, s1_2_0, 0x0107FC03, 0xF102F1EA, 0x0AFFF8FD, 0x0FFBFC05);
	r0 = D(r0, s1_2_1, 0x030213FC, 0x2F4CF00D, 0x13DF0DF9, 0x00000409);
	r1 = D(r1, s1_2_1, 0x09F51700, 0xF4FDEFF3, 0xFFF5ED01, 0x1EEF01F3);
	r2 = D(r2, s1_2_1, 0x12DBFF0C, 0x05E802F8, 0xFDEEFAFF, 0xFBADEFF5);
	r3 = D(r3, s1_2_1, 0x07F61600, 0x0403FB04, 0xFF08FEFE, 0x0B0BEDFB);
	r4 = D(r4, s1_2_1, 0xF8EA0505, 0xFFDFFDF9, 0x0EF41008, 0x0CF61312);
	r5 = D(r5, s1_2_1, 0x04E704F7, 0x05010002, 0xFE07FBEE, 0x011600FB);
	r6 = D(r6, s1_2_1, 0x061BEE0B, 0x00F9FE02, 0x0C07EC08, 0xFF020100);
	r7 = D(r7, s1_2_1, 0x09FBFFF8, 0xCA10FA19, 0xF5070CF3, 0xFD0106F6);
	r0 = D(r0, s1_2_2, 0x01FCFDFC, 0x09F415EE, 0x1DAD1814, 0x06130004);
	r1 = D(r1, s1_2_2, 0x00FBFEF5, 0x03F0101A, 0xF4F50303, 0x07FC09FD);
	r2 = D(r2, s1_2_2, 0x07F1F0FA, 0x0100FE05, 0xFCFEF000, 0xF11108FE);
	r3 = D(r3, s1_2_2, 0x011B11F5, 0x0DFF06FE, 0x00FAF9F9, 0x01FA0E00);
	r4 = D(r4, s1_2_2, 0x08F31217, 0x08100F10, 0x191EF714, 0x0304ECF6);
	r5 = D(r5, s1_2_2, 0xF616FCF5, 0x0100FEFD, 0xF7FCF501, 0x0D0AFAFA);
	r6 = D(r6, s1_2_2, 0xF2EADD07, 0xFFFE0101, 0x190213E5, 0xFF000002);
	r7 = D(r7, s1_2_2, 0xF7FCF6FB, 0xFB24EFE2, 0x0109F6F8, 0xFB0DE3FD);
	s0_0_0 = G[2][xy.y+0][xy.x+0]; s0_0_1 = G[2][xy.y+0][xy.x+1];
	s0_0_2 = G[2][xy.y+0][xy.x+2]; s0_1_0 = G[2][xy.y+1][xy.x+0];
	s0_1_1 = G[2][xy.y+1][xy.x+1]; s0_1_2 = G[2][xy.y+1][xy.x+2];
	s0_2_0 = G[2][xy.y+2][xy.x+0]; s0_2_1 = G[2][xy.y+2][xy.x+1];
	s0_2_2 = G[2][xy.y+2][xy.x+2]; s1_0_0 = G[3][xy.y+0][xy.x+0];
	s1_0_1 = G[3][xy.y+0][xy.x+1]; s1_0_2 = G[3][xy.y+0][xy.x+2];
	s1_1_0 = G[3][xy.y+1][xy.x+0]; s1_1_1 = G[3][xy.y+1][xy.x+1];
	s1_1_2 = G[3][xy.y+1][xy.x+2]; s1_2_0 = G[3][xy.y+2][xy.x+0];
	s1_2_1 = G[3][xy.y+2][xy.x+1]; s1_2_2 = G[3][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x9730CFEF, 0xE5EF06FA, 0x18E1010C, 0x06040FEB);
	r1 = D(r1, s0_0_0, 0x00FEFE04, 0x07F7F9F7, 0x08FBF005, 0x00FCE8E8);
	r2 = D(r2, s0_0_0, 0x05F50418, 0x01F90204, 0x03FB05FD, 0xE6FEF6E3);
	r3 = D(r3, s0_0_0, 0x020D01FE, 0x0EFCF8F4, 0xFBFC00F9, 0xFB0002FB);
	r4 = D(r4, s0_0_0, 0xFE0FF61B, 0x0305FC11, 0x0AFB0206, 0xFA01F2F7);
	r5 = D(r5, s0_0_0, 0xF4090EFD, 0xF9000403, 0x000E19E8, 0xFD050604);
	r6 = D(r6, s0_0_0, 0xF60D0F06, 0x00000101, 0xF7F9F4FF, 0x00010001);
	r7 = D(r7, s0_0_0, 0x06F40808, 0xFDEF22CE, 0xF8FF0100, 0xFC030308);
	r0 = D(r0, s0_0_1, 0x05FB0211, 0xFBADE8BF, 0xF30F0E1A, 0x0B02FF13);
	r1 = D(r1, s0_0_1, 0xFE0501FF, 0xF8FBFE1B, 0x0902F70D, 0xFEEA06B4);
	r2 = D(r2, s0_0_1, 0x11EA04EF, 0xFCF60F22, 0x00FFFDF7, 0xFFF5F6E1);
	r3 = D(r3, s0_0_1, 0x0014021A, 0x130710E8, 0xF71210E9, 0x06F706E5);
	r4 = D(r4, s0_0_1, 0xEB040CEC, 0x0C050812, 0x0AF6080F, 0x01FC1CE8);
	r5 = D(r5, s0_0_1, 0xEF0418E1, 0x0403FBF9, 0xEEFE15F4, 0x07FFFDF5);
	r6 = D(r6, s0_0_1, 0x0B1C3A82, 0x0202FD06, 0xFFF0F7FB, 0xFF01FF03);
	r7 = D(r7, s0_0_1, 0x000E0E01, 0xC109DEA1, 0x010CF70B, 0xF61C15EF);
	r0 = D(r0, s0_0_2, 0xFD02FF05, 0xF2FB011A, 0xD3EBFD5A, 0x81142552);
	r1 = D(r1, s0_0_2, 0xFF0500FE, 0x0B10F612, 0x0BFAF9E9, 0xEFFEF7F5);
	r2 = D(r2, s0_0_2, 0xF8FBEC09, 0x050C0CE9, 0x080400F8, 0x0DFCEBDA);
	r3 = D(r3, s0_0_2, 0x0E11F9FF, 0x01F5E7DD, 0xFBFA16EE, 0xFF00FEF8);
	r4 = D(r4, s0_0_2, 0xF9F21018, 0xF3FE0614, 0xF6D803EB, 0xFAF829F1);
	r5 = D(r5, s0_0_2, 0xF4FB13E7, 0x06FEFC00, 0xF9F6F3E1, 0xFBFD1912);
	r6 = D(r6, s0_0_2, 0xEF120E10, 0x02FFFC03, 0x03E900C4, 0xFC000006);
	r7 = D(r7, s0_0_2, 0xED02070A, 0x060B13EF, 0xF70E1104, 0xF7F80BFA);
	r0 = D(r0, s0_1_0, 0xE8F903B8, 0x12ECCED8, 0xE10A08FB, 0xF30505FF);
	r1 = D(r1, s0_1_0, 0x0AF7F6FF, 0x1800F1F1, 0xFD02F2F5, 0xE8F7FE0F);
	r2 = D(r2, s0_1_0, 0xFDF3D2EF, 0x0601F4FE, 0xFCFDFCFB, 0x0C01DC07);
	r3 = D(r3, s0_1_0, 0x080C0B0C, 0x04E30B16, 0xFBFCEFF7, 0x0CF701F7);
	r4 = D(r4, s0_1_0, 0xEEF1E5B5, 0x16ECC103, 0xFEECECFF, 0xFFF403FA);
	r5 = D(r5, s0_1_0, 0x06F5F6E0, 0x02FE0100, 0xE8FC22EA, 0x0AF0EF11);
	r6 = D(r6, s0_1_0, 0x0D09001B, 0x00060004, 0x0617F8FD, 0x01010300);
	r7 = D(r7, s0_1_0, 0x01F7FC07, 0xF2901B0F, 0x0D08F5FC, 0xFE052F01);
	r0 = D(r0, s0_1_1, 0xED0E3306, 0x04DFE21E, 0xC34510F7, 0xF2140E0A);
	r1 = D(r1, s0_1_1, 0xFEFD1BF6, 0x16FF03C6, 0x22EE00F8, 0xE7F2E6FA);
	r2 = D(r2, s0_1_1, 0xFDF6F402, 0x170ADC14, 0x0C03ECF9, 0x12EF1011);
	r3 = D(r3, s0_1_1, 0x0315120B, 0xF8EC1A03, 0xEE04E8D0, 0xFEF20508);
	r4 = D(r4, s0_1_1, 0xF8F31914, 0xF60BF500, 0xE5DEE108, 0xE7F00804);
	r5 = D(r5, s0_1_1, 0xDE97CB1B, 0xFB0510FC, 0xD1FBDCE7, 0xF5D719E1);
	r6 = D(r6, s0_1_1, 0xB713D826, 0xFF0AFC05, 0x17F01F0C, 0x00FF0203);
	r7 = D(r7, s0_1_1, 0x06FE0606, 0x24D38108, 0xF017020E, 0xB00B0CE7);
	r0 = D(r0, s0_1_2, 0x0D0AFCFD, 0x04F3E7E0, 0xB12BFBED, 0xED103FC5);
	r1 = D(r1, s0_1_2, 0x0102FE04, 0xEE020303, 0xF7E50309, 0x0C06EA00);
	r2 = D(r2, s0_1_2, 0x020DD605, 0x07F21DF5, 0xF7F41AF9, 0x04FA081B);
	r3 = D(r3, s0_1_2, 0x19FE1CF2, 0xFDFBCD04, 0x04F1F8ED, 0xF3010DF4);
	r4 = D(r4, s0_1_2, 0xF407CA0E, 0xF1F6F90B, 0xDCE6A701, 0x0BE5CEF5);
	r5 = D(r5, s0_1_2, 0xEFEA2BF4, 0x03FE10FE, 0xF7EDF111, 0xF2E03A00);
	r6 = D(r6, s0_1_2, 0xFB0BEFEC, 0x040402FC, 0x0AE2F90F, 0xFE02F903);
	r7 = D(r7, s0_1_2, 0xFA0B000D, 0xF8F8F205, 0xF6F219FC, 0x22090712);
	r0 = D(r0, s0_2_0, 0xFC0C0DE4, 0xF181D334, 0xD0E22B03, 0x0805FBEC);
	r1 = D(r1, s0_2_0, 0xFCFBFDF1, 0x0503FB20, 0x09FFF60C, 0xF50011FC);
	r2 = D(r2, s0_2_0, 0x0B09EDEB, 0x0301EBFF, 0xFDFE0006, 0xE8E0F2DB);
	r3 = D(r3, s0_2_0, 0xFB11F5E9, 0x0BFBF1FA, 0x0C09F80C, 0xFF0A1501);
	r4 = D(r4, s0_2_0, 0x0A0D00FD, 0xF00403F3, 0x04F2EEFD, 0x070111E1);
	r5 = D(r5, s0_2_0, 0xF3131D03, 0x0101FDF6, 0xE9DD1831, 0xEDDDC0F6);
	r6 = D(r6, s0_2_0, 0x0C16FC0D, 0x02FBFE08, 0xD4F9F102, 0x0103FEFE);
	r7 = D(r7, s0_2_0, 0x01040CFC, 0xF7E501BC, 0x14F8ED09, 0xFC131308);
	r0 = D(r0, s0_2_1, 0x05FFF104, 0xE5C781CB, 0xA30F33ED, 0x04FE0810);
	r1 = D(r1, s0_2_1, 0xF70A18FB, 0x06182B11, 0x17E8ED02, 0x01EDF7E6);
	r2 = D(r2, s0_2_1, 0x02120728, 0xE90429F2, 0xE4F8EBE4, 0xE9F60BE3);
	r3 = D(r3, s0_2_1, 0x04F9FB02, 0x05F21BF5, 0x020DECF5, 0x18F0FEF1);
	r4 = D(r4, s0_2_1, 0x0AE700BE, 0x0A00FFFA, 0xEDDFF0D0, 0xF8FB2311);
	r5 = D(r5, s0_2_1, 0xA0B01905, 0xFF02FF05, 0xE0FAFB16, 0xD6F6A5D5);
	r6 = D(r6, s0_2_1, 0x0AFD010D, 0x02F801FC, 0xFFF3AEF3, 0x05040404);
	r7 = D(r7, s0_2_1, 0x08001303, 0xEB1701E4, 0xE906ECFE, 0x1412051F);
	r0 = D(r0, s0_2_2, 0xFF03F50C, 0xF6FF1213, 0x890D25FD, 0x0011E3FF);
	r1 = D(r1, s0_2_2, 0x09FBEBF3, 0x0D111528, 0x0209FA0C, 0x19FA0C10);
	r2 = D(r2, s0_2_2, 0x1600F0FC, 0x09F409FA, 0xFE00F8F6, 0xF1F025DD);
	r3 = D(r3, s0_2_2, 0xED0CFD00, 0xF714EFE0, 0x0103DE05, 0xF2FCFB0A);
	r4 = D(r4, s0_2_2, 0xF615F728, 0x0702EA02, 0xE6FFF5F4, 0x1AFD19F7);
	r5 = D(r5, s0_2_2, 0xDFF71EDD, 0x030104F7, 0xC5F5F90D, 0xBFCBDBEB);
	r6 = D(r6, s0_2_2, 0x07E8F3FA, 0xF9000007, 0xEE19021A, 0x01FEF9FF);
	r7 = D(r7, s0_2_2, 0x01FEF40F, 0xE6E8FD08, 0x1402090B, 0x26F9F100);
	r0 = D(r0, s1_0_0, 0x3681A681, 0x25E4F6EC, 0x040C0AFD, 0x0FF60303);
	r1 = D(r1, s1_0_0, 0xF4FE05FF, 0xF703FC06, 0x0410F6FD, 0x140106FE);
	r2 = D(r2, s1_0_0, 0x200E0407, 0xD009F40A, 0xF6000200, 0xCB17E30E);
	r3 = D(r3, s1_0_0, 0xE8F70302, 0xFE05F1F8, 0xFC03F614, 0xF8FE0200);
	r4 = D(r4, s1_0_0, 0x12EF01FD, 0xF70107F7, 0xE1F6F9FF, 0xF6FD0001);
	r5 = D(r5, s1_0_0, 0x0F0817FA, 0xFBFB0204, 0x5CE91DF1, 0xE3FE0500);
	r6 = D(r6, s1_0_0, 0x20EAFDFA, 0x080401FA, 0x310DE90D, 0x05FF01FF);
	r7 = D(r7, s1_0_0, 0x09FD03FC, 0xC0E52DFF, 0x00F8FA01, 0x0CE50207);
	r0 = D(r0, s1_0_1, 0xDAEB35F9, 0xCAC72116, 0x50D51409, 0x14F5E60D);
	r1 = D(r1, s1_0_1, 0xF4FD08FF, 0xE3FB00FA, 0x0A0D04FE, 0xFB03F2FB);
	r2 = D(r2, s1_0_1, 0xDD030BF1, 0x16FF11FA, 0xF100F2F8, 0xF40C0005);
	r3 = D(r3, s1_0_1, 0xE30B00F0, 0xF6F2E6E2, 0x2100FF0B, 0x12FFFD00);
	r4 = D(r4, s1_0_1, 0x24350A08, 0xE3F6061C, 0xB7FBDBEC, 0x1802E800);
	r5 = D(r5, s1_0_1, 0xD2E02409, 0xFEF30B06, 0xE3EAE2D0, 0xF300FFF9);
	r6 = D(r6, s1_0_1, 0xF201FBE3, 0x040303FA, 0x13F6F617, 0x01FE0100);
	r7 = D(r7, s1_0_1, 0xFB000BF9, 0xE0053408, 0x160F0009, 0xF8FD12E9);
	r0 = D(r0, s1_0_2, 0x05FA01FA, 0x00221016, 0xFF0B1CE0, 0x5A81E5B0);
	r1 = D(r1, s1_0_2, 0x09FD05F3, 0xD505F5FA, 0x1308F50A, 0xF4FC13F8);
	r2 = D(r2, s1_0_2, 0x05EF0412, 0xF0FE01F6, 0xFEF4FDFD, 0x10F3FB0D);
	r3 = D(r3, s1_0_2, 0xF30ADD02, 0xF004C60B, 0xEEFFF904, 0xF90009F7);
	r4 = D(r4, s1_0_2, 0x0D14FDF1, 0xEE0515F9, 0xE7F9E90D, 0xDD30DAEF);
	r5 = D(r5, s1_0_2, 0xEEFAF816, 0xFF02FBEB, 0xF0FE02FD, 0x05FB06ED);
	r6 = D(r6, s1_0_2, 0xF4E8D204, 0xFE01FF04, 0xF61CF8F1, 0x00010208);
	r7 = D(r7, s1_0_2, 0x1BFD0202, 0xEA2702FF, 0xE207F316, 0x0911FEEA);
	r0 = D(r0, s1_1_0, 0x05092BF9, 0x0AD70405, 0xCB2013FF, 0x0508F905);
	r1 = D(r1, s1_1_0, 0xF7FFFAFA, 0x1FF3F608, 0xFA05FEFA, 0x200101FF);
	r2 = D(r2, s1_1_0, 0xF805FAFF, 0xFAEDF917, 0x0417EC05, 0xEEFAFD07);
	r3 = D(r3, s1_1_0, 0xEDF80E04, 0x0912EEEC, 0x0807E2F7, 0x030CF400);
	r4 = D(r4, s1_1_0, 0xCE2CFC12, 0x1E0881ED, 0xF7FD01FE, 0x0109FD01);
	r5 = D(r5, s1_1_0, 0xE426D721, 0x03FEFFFE, 0xEF190504, 0x090CE906);
	r6 = D(r6, s1_1_0, 0x07FA07F7, 0x03FE07FE, 0xD1FD0013, 0xFEFD01FF);
	r7 = D(r7, s1_1_0, 0x06FEFC01, 0xB804B4F0, 0x01F4FC07, 0xFCF710FB);
	r0 = D(r0, s1_1_1, 0x18EBFBF6, 0x062881FF, 0x0EF02EF4, 0x1004F11E);
	r1 = D(r1, s1_1_1, 0x03030129, 0x0AF7F8FC, 0x00130225, 0x01F8F8E1);
	r2 = D(r2, s1_1_1, 0x0F06FF09, 0x32E640A4, 0xFB14EB0E, 0xD3E4EDCB);
	r3 = D(r3, s1_1_1, 0xE1FCF20A, 0xEF0CE4F9, 0xEA0EF7FC, 0xD9E0EEE4);
	r4 = D(r4, s1_1_1, 0xDC13F333, 0x0C050101, 0xFEE9BC03, 0xEC06110E);
	r5 = D(r5, s1_1_1, 0x01D0B781, 0xF807F6E9, 0xF804EDEF, 0xCEDDB614);
	r6 = D(r6, s1_1_1, 0xFA22FBFC, 0x05F6FDE2, 0x02DBE7B6, 0x0AFC0CF2);
	r7 = D(r7, s1_1_1, 0x041FF4EF, 0x1A01CD97, 0xE30CF82B, 0x0408F6FB);
	r0 = D(r0, s1_1_2, 0xFD010417, 0x19FDF335, 0xE8B030D3, 0x10DCF8F6);
	r1 = D(r1, s1_1_2, 0xFF06F515, 0xF00ADA18, 0x0416F50C, 0x02FE03FA);
	r2 = D(r2, s1_1_2, 0xE7050FFA, 0xFA0807F0, 0xEB2DEB2E, 0xFC06DE25);
	r3 = D(r3, s1_1_2, 0x0510E9F6, 0xCF32BC5A, 0xFCFA0FFF, 0xFFD717FA);
	r4 = D(r4, s1_1_2, 0x0C11F706, 0xE3EA22F2, 0xE517811E, 0x0BFBF518);
	r5 = D(r5, s1_1_2, 0xFCD71300, 0x05F506E2, 0x0D0FFCD9, 0xCCF0DEE7);
	r6 = D(r6, s1_1_2, 0x0DEBEDF7, 0x01FC07F1, 0xF50CF50C, 0xFEFCFE3C);
	r7 = D(r7, s1_1_2, 0x08E8110A, 0xF4ED251A, 0x0B18E527, 0xFBDD0AE8);
	r0 = D(r0, s1_2_0, 0x110AFC00, 0x13F5F317, 0xDBFC0CF5, 0xFB01F7FE);
	r1 = D(r1, s1_2_0, 0x080A03F7, 0xE608F610, 0xFC1101FD, 0x0100FE0A);
	r2 = D(r2, s1_2_0, 0xFAE1F9F8, 0x0708FD07, 0x00FF0104, 0xEF0AF9FE);
	r3 = D(r3, s1_2_0, 0x00EFFBF3, 0xFDE5FC01, 0x08E719F5, 0xFA02FD05);
	r4 = D(r4, s1_2_0, 0x07C30EF7, 0x09FD07F5, 0xFEF60C02, 0x16F60100);
	r5 = D(r5, s1_2_0, 0xFBF30B06, 0x0200FE02, 0x030A060B, 0x06F1F50E);
	r6 = D(r6, s1_2_0, 0xF519F408, 0x01FFFE00, 0xF404E309, 0x01000002);
	r7 = D(r7, s1_2_0, 0x060C07FD, 0xE9F5E3F1, 0xFBF1FF03, 0xFD09FAFE);
	r0 = D(r0, s1_2_1, 0xE9080108, 0x17F9B207, 0xEE2806F4, 0xF500FAFB);
	r1 = D(r1, s1_2_1, 0x0907F8EE, 0xE0070C08, 0xFC1BFAFE, 0x00021AFA);
	r2 = D(r2, s1_2_1, 0xE912F221, 0x07020AF3, 0x01F6FB05, 0x0A1CEF20);
	r3 = D(r3, s1_2_1, 0xF7F3FF0A, 0xFDFC00F8, 0x1BEC0FE6, 0x1CE50F1A);
	r4 = D(r4, s1_2_1, 0x04F7F0FB, 0x000203FA, 0xFEFE04E8, 0x0304F80C);
	r5 = D(r5, s1_2_1, 0x07050FC1, 0x010003FF, 0xE5F9EC20, 0xEDE9E70B);
	r6 = D(r6, s1_2_1, 0x0404E30B, 0x040703FB, 0xEC0DEE3E, 0x01FBFE06);
	r7 = D(r7, s1_2_1, 0x05F20304, 0xECF20D1E, 0xDF0CE60E, 0x01FDF801);
	r0 = D(r0, s1_2_2, 0x01F900F7, 0xF41D052A, 0xD3E8DBE1, 0xE5FB07F7);
	r1 = D(r1, s1_2_2, 0xFBFDFEFA, 0xEBFC06ED, 0xFD0101FC, 0x19FDF905);
	r2 = D(r2, s1_2_2, 0xEE05F009, 0x0A0C0002, 0xFBFEF9FB, 0xE815ECF7);
	r3 = D(r3, s1_2_2, 0xF007EC00, 0xC6F7DD04, 0x120408F9, 0x0E17FE1E);
	r4 = D(r4, s1_2_2, 0x0DF400FF, 0xE50D00FD, 0xD908EF0B, 0xFCF5FA0D);
	r5 = D(r5, s1_2_2, 0xF8080006, 0x030103FE, 0xD909D20B, 0x9F01810B);
	r6 = D(r6, s1_2_2, 0x3819D600, 0x000402FE, 0x06F50DE3, 0xFDFA0008);
	r7 = D(r7, s1_2_2, 0x08FFFC02, 0x010F1F1F, 0xF0F7F50A, 0xEF000904);
	s0_0_0 = G[4][xy.y+0][xy.x+0]; s0_0_1 = G[4][xy.y+0][xy.x+1];
	s0_0_2 = G[4][xy.y+0][xy.x+2]; s0_1_0 = G[4][xy.y+1][xy.x+0];
	s0_1_1 = G[4][xy.y+1][xy.x+1]; s0_1_2 = G[4][xy.y+1][xy.x+2];
	s0_2_0 = G[4][xy.y+2][xy.x+0]; s0_2_1 = G[4][xy.y+2][xy.x+1];
	s0_2_2 = G[4][xy.y+2][xy.x+2]; s1_0_0 = G[5][xy.y+0][xy.x+0];
	s1_0_1 = G[5][xy.y+0][xy.x+1]; s1_0_2 = G[5][xy.y+0][xy.x+2];
	s1_1_0 = G[5][xy.y+1][xy.x+0]; s1_1_1 = G[5][xy.y+1][xy.x+1];
	s1_1_2 = G[5][xy.y+1][xy.x+2]; s1_2_0 = G[5][xy.y+2][xy.x+0];
	s1_2_1 = G[5][xy.y+2][xy.x+1]; s1_2_2 = G[5][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x81FE8181, 0x09CA1A2E, 0xE9E3F4EC, 0x01E80AFF);
	r1 = D(r1, s0_0_0, 0x02FF02FF, 0xF70AE9F6, 0x01EBFC0E, 0xF714FF10);
	r2 = D(r2, s0_0_0, 0x0B051307, 0xFAF6F6F7, 0x06E904F8, 0xEDFE0AF8);
	r3 = D(r3, s0_0_0, 0x01170102, 0xFE1B04EE, 0x0301FEE2, 0xFD0C0504);
	r4 = D(r4, s0_0_0, 0xF0C3E0D3, 0x0703EF09, 0xFF25FBE2, 0xFFEF07F1);
	r5 = D(r5, s0_0_0, 0x00F806E2, 0xFF0804F1, 0xF70811A6, 0x050CFCFC);
	r6 = D(r6, s0_0_0, 0x1124F5AB, 0xFE0100FF, 0xFDF2060B, 0x0102FF02);
	r7 = D(r7, s0_0_0, 0x01F80512, 0x12321714, 0x0007EFFC, 0xFE151AED);
	r0 = D(r0, s0_0_1, 0xDDEFF8D2, 0xEAF6D3A9, 0xFAFA1AF7, 0x06FBEDEE);
	r1 = D(r1, s0_0_1, 0xFC0300F5, 0xEC0D00FC, 0x000BF900, 0xFB06F609);
	r2 = D(r2, s0_0_1, 0xC6E4E638, 0x1E0DF2FF, 0x0105F300, 0x05F4010B);
	r3 = D(r3, s0_0_1, 0xFA06FFE6, 0xF612FA01, 0xFB0BFEF1, 0x03FFF301);
	r4 = D(r4, s0_0_1, 0xF3332E0A, 0x0A21FCFB, 0xFEF0EDE7, 0xFAFEFEEC);
	r5 = D(r5, s0_0_1, 0xF0E5D546, 0xFBF50A0A, 0xFA06FB10, 0xFFF1030C);
	r6 = D(r6, s0_0_1, 0xFDEC13E0, 0x03FCFE00, 0x0905F405, 0xFE0003FE);
	r7 = D(r7, s0_0_1, 0xFFF6FA0D, 0xF3FECF18, 0xF7F90DF7, 0xE306FE07);
	r0 = D(r0, s0_0_2, 0xF71404F0, 0xFC20EEF7, 0x07ED17D9, 0x81A932A1);
	r1 = D(r1, s0_0_2, 0x00FEFF02, 0x0BF905F4, 0xFFFDFF05, 0xFF0A03FB);
	r2 = D(r2, s0_0_2, 0xE1F1F604, 0x03FDFA04, 0x0011F407, 0xE800F5EC);
	r3 = D(r3, s0_0_2, 0x04F1FAEE, 0xE600F9DE, 0x09010B07, 0x020102FE);
	r4 = D(r4, s0_0_2, 0xDEEA07F2, 0x03EAFE0C, 0xFD0EF90C, 0xF90A08EC);
	r5 = D(r5, s0_0_2, 0xF8E7FB24, 0x04020301, 0x18FFFDF8, 0x070809FA);
	r6 = D(r6, s0_0_2, 0xFB1809EF, 0xFE0000FE, 0xF31FFE05, 0xFFFE0302);
	r7 = D(r7, s0_0_2, 0xEBF90D03, 0xE3EB04F8, 0x000706FC, 0xFDFE04FF);
	r0 = D(r0, s0_1_0, 0x1A0123EB, 0x13D10AE6, 0xFE3B1537, 0xF8090C00);
	r1 = D(r1, s0_1_0, 0xFBEA0703, 0x0CEEDFEB, 0xFE041A03, 0xFCF40EF3);
	r2 = D(r2, s0_1_0, 0x08EAF8F1, 0x0810F603, 0xFBF100F8, 0xF90806F0);
	r3 = D(r3, s0_1_0, 0xFA0A02F3, 0x0609F7FF, 0xF618000D, 0xFAEDFD06);
	r4 = D(r4, s0_1_0, 0x00D3CAFD, 0xFEDE0A13, 0x0A000BE7, 0xF60B02EF);
	r5 = D(r5, s0_1_0, 0x0713F205, 0xFDF6FBFF, 0xF9DED0E0, 0x0C03EF33);
	r6 = D(r6, s0_1_0, 0x0BE2E2E8, 0x02FF0006, 0x06F70B05, 0x01FD0104);
	r7 = D(r7, s0_1_0, 0x00F500FB, 0x14F71A3E, 0x0219E9F7, 0x07FF0305);
	r0 = D(r0, s0_1_1, 0x0E1EFEFB, 0xCA815313, 0x18C71681, 0xFFFDFCE3);
	r1 = D(r1, s0_1_1, 0x0A12FBFB, 0x13F1F9E6, 0x08F30105, 0xEF1B13F0);
	r2 = D(r2, s0_1_1, 0xCFD3F804, 0x11E6F70F, 0x0E10F9FB, 0x19CC040E);
	r3 = D(r3, s0_1_1, 0xDEF402FF, 0xE90500D8, 0x06F60A01, 0x040DF7F4);
	r4 = D(r4, s0_1_1, 0xE9C0F006, 0x5F0E0FFC, 0xDDDDF3E7, 0x00EEDDFD);
	r5 = D(r5, s0_1_1, 0x3A05FD28, 0xFE0D0D03, 0xF4F7E4EB, 0xE608F0E6);
	r6 = D(r6, s0_1_1, 0xD0EEF001, 0xF9090AFF, 0xFDFCE6FB, 0xFFF80105);
	r7 = D(r7, s0_1_1, 0x181CFD09, 0xE115331E, 0xF70219E6, 0xF5050200);
	r0 = D(r0, s0_1_2, 0x0307F901, 0xE0F53203, 0x10F51323, 0xE2FF0CF7);
	r1 = D(r1, s0_1_2, 0xF30C0C01, 0xFB07FD0C, 0xF3050BFC, 0x071B02F1);
	r2 = D(r2, s0_1_2, 0xF1FBFCFD, 0xF6E6FEF7, 0x050C06FC, 0x04B504FD);
	r3 = D(r3, s0_1_2, 0x0B0DFFFC, 0xFAF00418, 0x0D0CFC03, 0x0700FEFA);
	r4 = D(r4, s0_1_2, 0xE12E0BF7, 0x10ED0810, 0xFCFF1CD7, 0xE11CFCF7);
	r5 = D(r5, s0_1_2, 0x07D60019, 0x0AF8FDFD, 0xBAF6FCEA, 0xE4F600FF);
	r6 = D(r6, s0_1_2, 0xEB33010C, 0x0608FAFC, 0x0FE5FEF3, 0xF4FE0904);
	r7 = D(r7, s0_1_2, 0x33FB0DFA, 0xF9E50911, 0xFBF0F8FC, 0x0E010005);
	r0 = D(r0, s0_2_0, 0xEC060DF8, 0xEA1F31EA, 0xF712DEEF, 0x0609090A);
	r1 = D(r1, s0_2_0, 0xFE0D12FA, 0xF7070A00, 0x03FA03F9, 0x07FDF2FB);
	r2 = D(r2, s0_2_0, 0x14E60C0F, 0x00F5FBF4, 0x0903FA08, 0xF9F422F0);
	r3 = D(r3, s0_2_0, 0xEF0DF9F9, 0x00090504, 0xF5EEEC0E, 0xFDFE000A);
	r4 = D(r4, s0_2_0, 0xF401F027, 0x0A010703, 0x09E4100E, 0x1107F5F0);
	r5 = D(r5, s0_2_0, 0xFFE91806, 0xFDFF0102, 0x0721F7FC, 0x07FF0900);
	r6 = D(r6, s0_2_0, 0xF702FDE9, 0x01FF0204, 0xFE032A0B, 0xFE02FFFF);
	r7 = D(r7, s0_2_0, 0xFFF6FFFC, 0xD6E61A3D, 0x12F3FEF2, 0x03FDFC0D);
	r0 = D(r0, s0_2_1, 0x0EF5FD04, 0x36DEF50C, 0xFC0C3B08, 0x0F0A0108);
	r1 = D(r1, s0_2_1, 0x0407FD03, 0xFF15FC1E, 0x04FDFEFE, 0xFB000BF9);
	r2 = D(r2, s0_2_1, 0x14280E07, 0xF202EDFB, 0x14FBFBF7, 0xF8170BF6);
	r3 = D(r3, s0_2_1, 0xFFFAFCFF, 0x0119FE07, 0xE5F40406, 0x13FF070C);
	r4 = D(r4, s0_2_1, 0x111ECFF6, 0x22030902, 0xFF2719FF, 0xF40DF4F3);
	r5 = D(r5, s0_2_1, 0xF20110F9, 0x020003FF, 0x100907E0, 0xE5DDE70C);
	r6 = D(r6, s0_2_1, 0x070500ED, 0x02050500, 0x01F4FC0E, 0xFFFAFC05);
	r7 = D(r7, s0_2_1, 0x0B02FE08, 0x03172BF2, 0xE10128FF, 0x050EFAFD);
	r0 = D(r0, s0_2_2, 0x021AFB07, 0xF93CD307, 0xF6F52A0B, 0x03FCF40C);
	r1 = D(r1, s0_2_2, 0xFC0B0303, 0xFA0EFF05, 0xFCECF7FC, 0x0512FCFF);
	r2 = D(r2, s0_2_2, 0x1F221307, 0x00ECF5F9, 0xF60003FE, 0xF1E904F1);
	r3 = D(r3, s0_2_2, 0x0B11F6FF, 0x05100E03, 0xF90CF7F1, 0x0508FC00);
	r4 = D(r4, s0_2_2, 0xF134F2E4, 0x07091104, 0xFCF204FF, 0x040D04FF);
	r5 = D(r5, s0_2_2, 0xE4C60FFC, 0xFE0102FD, 0xECF402FD, 0x01FEF70D);
	r6 = D(r6, s0_2_2, 0x0604F8F0, 0x08080300, 0xEAFFFBFB, 0xFBFC0105);
	r7 = D(r7, s0_2_2, 0x14F803FC, 0xE4CE090F, 0xFAE4E601, 0x030914FC);
	r0 = D(r0, s1_0_0, 0x9A34E416, 0x162118F8, 0xFB140AFD, 0x0208020D);
	r1 = D(r1, s1_0_0, 0xFDF00103, 0x032C0200, 0x0002FF05, 0xF8130604);
	r2 = D(r2, s1_0_0, 0xFEE90102, 0x051D040C, 0xFBCDFFFD, 0xF1010103);
	r3 = D(r3, s1_0_0, 0x06FEFFF9, 0xF50705F0, 0x06CEFAFC, 0x070704FA);
	r4 = D(r4, s1_0_0, 0xF9EA0EF2, 0xEC4DFD10, 0x09C60EF5, 0xFBD5FBF4);
	r5 = D(r5, s1_0_0, 0x08F101F6, 0x02040002, 0xFF0C0714, 0x01320313);
	r6 = D(r6, s1_0_0, 0xFECAFEF0, 0x00F6FDFD, 0xFC0C020F, 0x01070004);
	r7 = D(r7, s1_0_0, 0xF7EEFE0B, 0xD71BFCF4, 0x060C0900, 0xFDFCF5FB);
	r0 = D(r0, s1_0_1, 0xF5E3FCDB, 0xBDACEF95, 0xEC2D07BF, 0x131505F5);
	r1 = D(r1, s1_0_1, 0x0004FAFD, 0x02E7F8FB, 0x03F105FF, 0xD312F7D4);
	r2 = D(r2, s1_0_1, 0xCD31F5FB, 0xFF10F7F4, 0x05CF07E4, 0xFF020BE5);
	r3 = D(r3, s1_0_1, 0x001CF4DB, 0x0627F80C, 0xFC1D0A15, 0x01F90622);
	r4 = D(r4, s1_0_1, 0x0106F5FF, 0xEAD0FBE4, 0x08FB0714, 0xFD37081A);
	r5 = D(r5, s1_0_1, 0xFA81F818, 0x0518FC00, 0x05F4FC0B, 0xF7EA08FE);
	r6 = D(r6, s1_0_1, 0xF6F8F0FE, 0xFD0001F5, 0x01E904B6, 0x0103FF03);
	r7 = D(r7, s1_0_1, 0xF5CAFD0A, 0x971201E4, 0x032706FC, 0xF5F5F60E);
	r0 = D(r0, s1_0_2, 0x08FC06FE, 0x3607117F, 0xFA0D35EC, 0x8484BA81);
	r1 = D(r1, s1_0_2, 0xFE04030C, 0x04E9FC17, 0x0A0DFBF7, 0x06ED04F8);
	r2 = D(r2, s1_0_2, 0xD20D0308, 0xFE06FCE5, 0xFADAFD08, 0xF52E101E);
	r3 = D(r3, s1_0_2, 0x0407F7FE, 0x0AE110EF, 0x06DDFC07, 0x061CFEDD);
	r4 = D(r4, s1_0_2, 0x05BF021C, 0xFCF7090E, 0x0C98FE10, 0x09E4E4FC);
	r5 = D(r5, s1_0_2, 0xCE2FF273, 0x00F40511, 0xFEFF0314, 0x16F6FCEC);
	r6 = D(r6, s1_0_2, 0xFDD8FA0E, 0x01FE01FD, 0x05110AF2, 0x0101FE01);
	r7 = D(r7, s1_0_2, 0xEEFF04E5, 0xA7010620, 0x0600F8F1, 0x06EF0056);
	r0 = D(r0, s1_1_0, 0x941B08F2, 0x1819FF29, 0x141B0E06, 0xF20A0409);
	r1 = D(r1, s1_1_0, 0x01FF0300, 0x040CF808, 0x0A0DFFFB, 0xE806FA0B);
	r2 = D(r2, s1_1_0, 0x0AE012F6, 0x010308F3, 0x06050204, 0xF1E401FB);
	r3 = D(r3, s1_1_0, 0xF7CAFEEE, 0x040BF6E9, 0xF3FEF7E6, 0xFAF803F9);
	r4 = D(r4, s1_1_0, 0x19F01A15, 0xE940DCF8, 0x03150910, 0x060A0D05);
	r5 = D(r5, s1_1_0, 0xFF0404F3, 0xFE010200, 0xF91AFB0C, 0x05FE0801);
	r6 = D(r6, s1_1_0, 0xEE02F809, 0x03050408, 0x03F9E7F8, 0x0002FE00);
	r7 = D(r7, s1_1_0, 0xFBFCFE00, 0xB3C31CEF, 0x05F701FF, 0x00F5F803);
	r0 = D(r0, s1_1_1, 0x100605E6, 0xA80BB218, 0x0EFB2C08, 0x15FFF50D);
	r1 = D(r1, s1_1_1, 0xFC180108, 0x2F12D109, 0x031E04F4, 0xBED1000A);
	r2 = D(r2, s1_1_1, 0xDF21FC05, 0xFED21C0D, 0xFB02FDF3, 0x1E12F4FE);
	r3 = D(r3, s1_1_1, 0x0F0603F3, 0xF812FC0B, 0xF3FFFA06, 0x0AF009FD);
	r4 = D(r4, s1_1_1, 0x10F61924, 0xA3021081, 0x00F81909, 0x1419EFFA);
	r5 = D(r5, s1_1_1, 0xF2B371FC, 0xFB000202, 0xED1FF5F2, 0x0BE31AFA);
	r6 = D(r6, s1_1_1, 0x810C1F03, 0x05100407, 0xEF2B082D, 0x04080800);
	r7 = D(r7, s1_1_1, 0xF3F2EEDD, 0x81F63308, 0x01E9FAF4, 0xF61B030F);
	r0 = D(r0, s1_1_2, 0x0B190905, 0xF51DE5F4, 0x105D28BF, 0x8130F0EF);
	r1 = D(r1, s1_1_2, 0x0D11FFFB, 0x0610EEFB, 0x0BFE070A, 0xE5FE06F6);
	r2 = D(r2, s1_1_2, 0xF6120E18, 0x0A09FB0E, 0x1001EBFE, 0xFBF703EA);
	r3 = D(r3, s1_1_2, 0x0E0B010C, 0xF80F100C, 0xE2081492, 0xEDFFFEFA);
	r4 = D(r4, s1_1_2, 0xD50109C4, 0xEF0C09F7, 0xF9E00907, 0xEC1A04E9);
	r5 = D(r5, s1_1_2, 0xA5E5F8E6, 0xFAF3FDFE, 0xF102E1F2, 0x060E0707);
	r6 = D(r6, s1_1_2, 0xA13119F2, 0x02040103, 0x0D000ECC, 0x050A0300);
	r7 = D(r7, s1_1_2, 0xFDFE03CE, 0xAD12140B, 0x03040FF6, 0x14EFEEFB);
	r0 = D(r0, s1_2_0, 0xF0F9F2EA, 0x04160FEF, 0xFDFE28F2, 0xFA100B07);
	r1 = D(r1, s1_2_0, 0xFDFFFDFF, 0x000CFD05, 0x06FC0305, 0x0003F206);
	r2 = D(r2, s1_2_0, 0x000A1407, 0xFF0B0AFE, 0x10FF07FC, 0x100CEE15);
	r3 = D(r3, s1_2_0, 0xFF01FEFB, 0xFD0DF80E, 0x04F507FF, 0x0000FBFC);
	r4 = D(r4, s1_2_0, 0x0A091611, 0xFB1408F4, 0x040B10F7, 0x03FF00F6);
	r5 = D(r5, s1_2_0, 0xEC051AFE, 0x0000FE00, 0x15030A17, 0x05071C05);
	r6 = D(r6, s1_2_0, 0x00F1F4F8, 0x00FFFAFD, 0x000013FD, 0xFF01FF00);
	r7 = D(r7, s1_2_0, 0xFF00FCFB, 0xF281FCFE, 0x090506F2, 0xFEFFFAFD);
	r0 = D(r0, s1_2_1, 0x01FA05F2, 0xE21909D6, 0xE8FF4715, 0x0302FBF9);
	r1 = D(r1, s1_2_1, 0xF702FC01, 0x1EFEEE08, 0xFCF6F0F1, 0xD50312FC);
	r2 = D(r2, s1_2_1, 0x0B02FFFE, 0xF7F6EB0D, 0x190B1700, 0xDE01F805);
	r3 = D(r3, s1_2_1, 0x0205FA10, 0xF41509F6, 0xFBDE0FF9, 0x09FD15F8);
	r4 = D(r4, s1_2_1, 0x37F50D01, 0xFA020102, 0xE0FFF007, 0x14FD0802);
	r5 = D(r5, s1_2_1, 0x020C3E01, 0x09040502, 0x09FD01F4, 0xDF1DE2F8);
	r6 = D(r6, s1_2_1, 0xF004F2F1, 0x010007FF, 0x030FF5F7, 0xFFFFFAFE);
	r7 = D(r7, s1_2_1, 0xFEFB0BFE, 0xEF04EBFA, 0x0F06EA0A, 0x04FFFF01);
	r0 = D(r0, s1_2_2, 0xFCF404F7, 0x8B01FE19, 0x8111DDF4, 0xF8110DFC);
	r1 = D(r1, s1_2_2, 0xF1000901, 0xD9FD0EF6, 0xFAFCF9FD, 0xDF020806);
	r2 = D(r2, s1_2_2, 0xEC0207EB, 0x1505F6F8, 0x0AFC0102, 0xEF0FE7F9);
	r3 = D(r3, s1_2_2, 0x16030006, 0xEF06F400, 0x070CF405, 0xF7091005);
	r4 = D(r4, s1_2_2, 0xFCDAF5F8, 0x00F906F3, 0xFEFAD7F5, 0xFB02FFFB);
	r5 = D(r5, s1_2_2, 0xBA020903, 0xFC0202FE, 0x1101EEE1, 0x0A2CE806);
	r6 = D(r6, s1_2_2, 0xF5FB08F8, 0xFD02FB00, 0xFEF70B0F, 0x06FC0700);
	r7 = D(r7, s1_2_2, 0x010502FC, 0xE3F71F09, 0xFF0CFCFC, 0xFCF9FCF5);
	s0_0_0 = G[6][xy.y+0][xy.x+0]; s0_0_1 = G[6][xy.y+0][xy.x+1];
	s0_0_2 = G[6][xy.y+0][xy.x+2]; s0_1_0 = G[6][xy.y+1][xy.x+0];
	s0_1_1 = G[6][xy.y+1][xy.x+1]; s0_1_2 = G[6][xy.y+1][xy.x+2];
	s0_2_0 = G[6][xy.y+2][xy.x+0]; s0_2_1 = G[6][xy.y+2][xy.x+1];
	s0_2_2 = G[6][xy.y+2][xy.x+2]; s1_0_0 = G[7][xy.y+0][xy.x+0];
	s1_0_1 = G[7][xy.y+0][xy.x+1]; s1_0_2 = G[7][xy.y+0][xy.x+2];
	s1_1_0 = G[7][xy.y+1][xy.x+0]; s1_1_1 = G[7][xy.y+1][xy.x+1];
	s1_1_2 = G[7][xy.y+1][xy.x+2]; s1_2_0 = G[7][xy.y+2][xy.x+0];
	s1_2_1 = G[7][xy.y+2][xy.x+1]; s1_2_2 = G[7][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x81818191, 0xFE00DC0D, 0xF007FD00, 0x000B04EE);
	r1 = D(r1, s0_0_0, 0xFE0603FF, 0x050201F8, 0x0D07F102, 0xFBFE05FA);
	r2 = D(r2, s0_0_0, 0xF4F90507, 0x02FB08F3, 0x0100FA02, 0x02FDF504);
	r3 = D(r3, s0_0_0, 0xF708FCFE, 0xDC020BFE, 0xF2FFFC07, 0x0101FBF9);
	r4 = D(r4, s0_0_0, 0xFA0AF41D, 0x0DF203DD, 0x0C0801F1, 0xFF07F71A);
	r5 = D(r5, s0_0_0, 0x00F71009, 0x090202FE, 0xDEF6FB42, 0x030800FC);
	r6 = D(r6, s0_0_0, 0x0AF9FE0B, 0xFFFF0202, 0x0D01F4F9, 0x02FF0000);
	r7 = D(r7, s0_0_0, 0xFD050309, 0x090B0017, 0x09FEFFF9, 0xF2020502);
	r0 = D(r0, s0_0_1, 0xD20ED43E, 0x9502D414, 0xFDF9F401, 0x07F8FEFB);
	r1 = D(r1, s0_0_1, 0xF80004FC, 0xFCF3FF09, 0x08F405FF, 0xFAFCF901);
	r2 = D(r2, s0_0_1, 0xDEF1FCFD, 0x03050CEB, 0x000604F5, 0xE6F40BFB);
	r3 = D(r3, s0_0_1, 0x190205EB, 0xFCF6FF0D, 0xF403FEF0, 0x00FFFEEB);
	r4 = D(r4, s0_0_1, 0xCC02E114, 0xF50B00D7, 0xFCF80FD8, 0xE4F2FD21);
	r5 = D(r5, s0_0_1, 0xF50D10FB, 0x18050002, 0x18E9FF25, 0xE708030F);
	r6 = D(r6, s0_0_1, 0xE9F70BF6, 0x07FF00FF, 0xF10E020A, 0x00020103);
	r7 = D(r7, s0_0_1, 0xF70AFA0A, 0x12010AE1, 0x1AFCFAF3, 0xFDF514FB);
	r0 = D(r0, s0_0_2, 0x09030A0B, 0x821120C6, 0xEB0913E5, 0x81818D82);
	r1 = D(r1, s0_0_2, 0xFFFF0302, 0xF402071A, 0x03FF080E, 0x0806EC0A);
	r2 = D(r2, s0_0_2, 0xFD06ECE0, 0xFFFFFE12, 0xFE0506F8, 0x210EFF00);
	r3 = D(r3, s0_0_2, 0x0FF30E01, 0xE9FDFD11, 0xFF05EE11, 0x0901F905);
	r4 = D(r4, s0_0_2, 0xF5F70E21, 0xE8FEF6F3, 0xF905F726, 0xF1E6EE37);
	r5 = D(r5, s0_0_2, 0xED0404CF, 0x1A02FBFE, 0xFC0A02F7, 0x17FA0711);
	r6 = D(r6, s0_0_2, 0xF9020315, 0xFF0101FC, 0xFE01F61D, 0x00000003);
	r7 = D(r7, s0_0_2, 0xFB0DFAEF, 0xF0FDEF16, 0x07FC0200, 0x1CF70209);
	r0 = D(r0, s0_1_0, 0x450BD2E4, 0xEB0ADA29, 0x1C21E5F6, 0x0807FA0A);
	r1 = D(r1, s0_1_0, 0xF70AFF01, 0xD2E128EF, 0x1111DF09, 0xEFFFEE14);
	r2 = D(r2, s0_1_0, 0x1ADFF0FE, 0x03D8140E, 0x02F60408, 0xD5FCF41D);
	r3 = D(r3, s0_1_0, 0xEDFEFB04, 0xF5F1FBE8, 0x00FD080B, 0xF6FE0DFA);
	r4 = D(r4, s0_1_0, 0x1F24D60A, 0xFEE6151C, 0x010CF9FD, 0xF30806FF);
	r5 = D(r5, s0_1_0, 0x30FBE911, 0x03100504, 0x04F604FB, 0xEDF004FF);
	r6 = D(r6, s0_1_0, 0x18F6F600, 0x080FF9FD, 0xE8F4F94A, 0x00FFFFFE);
	r7 = D(r7, s0_1_0, 0xFAFC00FB, 0xF90D1309, 0x01F5FF06, 0xFDF2080A);
	r0 = D(r0, s0_1_1, 0x021EEEF3, 0xB2E6C1CC, 0x3DE5AEEA, 0xF4D9FBF8);
	r1 = D(r1, s0_1_1, 0xE0F8FD13, 0x81F6FEFD, 0xF3FBF8FB, 0x0E0DE10E);
	r2 = D(r2, s0_1_1, 0xF318F0DA, 0x071218F8, 0xEB15F210, 0x08040EFA);
	r3 = D(r3, s0_1_1, 0x1030FA05, 0xE310F0FB, 0xE9001C2D, 0xE1FCFCEE);
	r4 = D(r4, s0_1_1, 0xDEDCEBCD, 0x86E01BFB, 0xA20A07E9, 0xFD01F205);
	r5 = D(r5, s0_1_1, 0x25F12EF7, 0x0F4F1404, 0xE42EFA03, 0xD60FEBA0);
	r6 = D(r6, s0_1_1, 0x3B1A24F2, 0x4EF40613, 0x39120ED9, 0x232FFCF7);
	r7 = D(r7, s0_1_1, 0x0A2BE11C, 0xBD07E0D1, 0xD31100E3, 0x263304FE);
	r0 = D(r0, s0_1_2, 0x000CF311, 0x3613C581, 0x36F2ED2A, 0xE1CD11F6);
	r1 = D(r1, s0_1_2, 0xF906010C, 0x0A05F6F0, 0x0E05F90B, 0x1E05FB1B);
	r2 = D(r2, s0_1_2, 0x2601E9EA, 0xFCF8EBF9, 0xC6F0FF08, 0xD2020EEB);
	r3 = D(r3, s0_1_2, 0xE6FA05EE, 0xC2FAE2CE, 0xF4040BE1, 0xF0000D01);
	r4 = D(r4, s0_1_2, 0x1B030C15, 0xDB0DF201, 0xD2F7F8DF, 0x1200EB1A);
	r5 = D(r5, s0_1_2, 0xA9FD11D6, 0xF6030C07, 0x0203E603, 0xF90DFCF4);
	r6 = D(r6, s0_1_2, 0x25091605, 0x060203FC, 0x12F8E4F3, 0xF600FC00);
	r7 = D(r7, s0_1_2, 0xEB08000A, 0x8115EC81, 0xFE0AF7E7, 0xFE05FAFB);
	r0 = D(r0, s0_2_0, 0xEC02FE10, 0xFD0C25E8, 0x0926F604, 0x021101F9);
	r1 = D(r1, s0_2_0, 0x0332F4FB, 0xE5E72811, 0x0E14F7FB, 0xFE07F515);
	r2 = D(r2, s0_2_0, 0x19FDF4E8, 0xF5DE0901, 0x0314EEFD, 0x0801F7F9);
	r3 = D(r3, s0_2_0, 0x00F80DE9, 0xF6EC00F3, 0xF7F4FEF6, 0x06DB0A0B);
	r4 = D(r4, s0_2_0, 0xE1EB1EFD, 0x0006FCED, 0x000CF5FB, 0xF81AF801);
	r5 = D(r5, s0_2_0, 0xF642FEF2, 0x000200FE, 0xFCF4F607, 0xF1030213);
	r6 = D(r6, s0_2_0, 0xF202F1F8, 0x0303FF00, 0x0DF31507, 0x01FE0001);
	r7 = D(r7, s0_2_0, 0xFEF80406, 0x12B603FE, 0x0EFAFEF6, 0x030011FF);
	r0 = D(r0, s0_2_1, 0x170A0107, 0xDDD30F05, 0xE8E91B27, 0x070F0003);
	r1 = D(r1, s0_2_1, 0x02320308, 0xEE120A02, 0x1A02F1FD, 0x210CE5FB);
	r2 = D(r2, s0_2_1, 0x06161004, 0x0F051915, 0xF4F60817, 0xD3FEEEE8);
	r3 = D(r3, s0_2_1, 0xF0F8FBF6, 0xFF0CF8FB, 0x1906D6FA, 0x1ECBF7EC);
	r4 = D(r4, s0_2_1, 0xE8C5E902, 0x08F8FB13, 0x0DFFFC14, 0x032A02F1);
	r5 = D(r5, s0_2_1, 0xF7BBF942, 0xFFFFFE00, 0xE116EF14, 0xD6FB12F9);
	r6 = D(r6, s0_2_1, 0xF900BAFE, 0x08FCF6F9, 0xE2DFD803, 0x040101FC);
	r7 = D(r7, s0_2_1, 0x07FBFFF7, 0x0FD5FC19, 0xE60A23E7, 0x110A0501);
	r0 = D(r0, s0_2_2, 0x0BF7FC00, 0xE608F8A7, 0x01F805FC, 0x09FAFC01);
	r1 = D(r1, s0_2_2, 0x03FFFBF5, 0x06F60703, 0x0C0404F9, 0xF9040C27);
	r2 = D(r2, s0_2_2, 0x07F90BFA, 0x0209F8FA, 0x0AF9E800, 0x19FCFFED);
	r3 = D(r3, s0_2_2, 0x010DFADD, 0xFCF613F9, 0x02F6FF0C, 0x0804FDF9);
	r4 = D(r4, s0_2_2, 0xDD191627, 0xF6F7010C, 0xF40801FB, 0xF4F504F2);
	r5 = D(r5, s0_2_2, 0xCEFF15B0, 0xFCFF0407, 0xFA000B0B, 0x01F513ED);
	r6 = D(r6, s0_2_2, 0x0DF4EE09, 0xFDFE0801, 0x121908FA, 0x0402F8FC);
	r7 = D(r7, s0_2_2, 0xFEF2FDFD, 0xB312DBEE, 0x05F906FF, 0xECF52603);
	r0 = D(r0, s1_0_0, 0x818181F6, 0x1C0ADEAA, 0xFA10F4ED, 0xFAF1F919);
	r1 = D(r1, s1_0_0, 0x07020504, 0x1007FEE0, 0xFB050CE4, 0xF60C0AF4);
	r2 = D(r2, s1_0_0, 0x0FF906F3, 0x0E00F012, 0xFFFBF81F, 0x080AF2FA);
	r3 = D(r3, s1_0_0, 0x05000512, 0xFE05F705, 0x0DFEE8F9, 0x02F6FCFA);
	r4 = D(r4, s1_0_0, 0x150012FF, 0x060F0121, 0xFBFF00EE, 0x040C07DE);
	r5 = D(r5, s1_0_0, 0x00FA0BFF, 0x01F90204, 0x06F3F426, 0x05030C17);
	r6 = D(r6, s1_0_0, 0xFCFC02DE, 0xFF030300, 0x0CFCFCE8, 0x010101FC);
	r7 = D(r7, s1_0_0, 0xFA020BFF, 0x050415F8, 0x03FD0AFE, 0x0803080B);
	r0 = D(r0, s1_0_1, 0xC81006E9, 0x18EC1102, 0xFEFA1139, 0x0716FA1F);
	r1 = D(r1, s1_0_1, 0x02030906, 0x0E06FDF9, 0xFDF9FF10, 0xFE010AE6);
	r2 = D(r2, s1_0_1, 0x02D6FFFE, 0x16FDFE08, 0x0202FAF3, 0x1D0AEDEB);
	r3 = D(r3, s1_0_1, 0x04FD13EE, 0xFFF0FC0B, 0x00F3CD29, 0x02FBECFE);
	r4 = D(r4, s1_0_1, 0xFFFFF4E2, 0x25EF0314, 0xFFF9E4D3, 0x08F1F912);
	r5 = D(r5, s1_0_1, 0x1817EC25, 0x01FCF600, 0xF60E12E5, 0x04F7040B);
	r6 = D(r6, s1_0_1, 0xFEEFE006, 0xFF0003FC, 0xFF0A0706, 0xFE010303);
	r7 = D(r7, s1_0_1, 0xF7051102, 0x0E0BF715, 0x0202FE1F, 0x01F9E930);
	r0 = D(r0, s1_0_2, 0xF902052D, 0x16071522, 0x04FCEEA5, 0x81839981);
	r1 = D(r1, s1_0_2, 0x02000502, 0xFD0201F8, 0xFAFF0304, 0xFA020FF0);
	r2 = D(r2, s1_0_2, 0xF6FB0BF4, 0x000108FE, 0x040505F1, 0xFDFC14F9);
	r3 = D(r3, s1_0_2, 0xFAFD05FE, 0xF408EEF1, 0x03F6FC0D, 0x0204FAF0);
	r4 = D(r4, s1_0_2, 0xEE0600F8, 0xFB0007EC, 0xE70D0500, 0xFAFB02F1);
	r5 = D(r5, s1_0_2, 0x01F2F300, 0xFFFF04FF, 0xFB0316FA, 0x0008FF24);
	r6 = D(r6, s1_0_2, 0x0DFFF301, 0x0201FEFF, 0xF5031DFC, 0x01000101);
	r7 = D(r7, s1_0_2, 0xFEF2FADF, 0xFEF40527, 0xF3FD000B, 0x0BF7F6EF);
	r0 = D(r0, s1_1_0, 0x19DA1916, 0x1B05D716, 0x16ED2132, 0x0AF80102);
	r1 = D(r1, s1_1_0, 0x02030303, 0x05FCF4E9, 0xEFFA0ACD, 0x00000CF0);
	r2 = D(r2, s1_1_0, 0xF8E6EC10, 0x0E1FF638, 0xF7090906, 0x01FC11E2);
	r3 = D(r3, s1_1_0, 0xF50505E4, 0xFB00F6BC, 0xFE080AF0, 0x03F6FCED);
	r4 = D(r4, s1_1_0, 0xF439F0C8, 0xF9F0F099, 0x080FE9B9, 0x02E9110F);
	r5 = D(r5, s1_1_0, 0x10050946, 0x01F00201, 0xFF06F019, 0x0AEFF4FD);
	r6 = D(r6, s1_1_0, 0x06FCF7FE, 0x0103FE01, 0x18F4F6EC, 0xFFFCFD07);
	r7 = D(r7, s1_1_0, 0xF9FCFDFD, 0x1415DBBE, 0xFBFC10FE, 0xFBF4FD18);
	r0 = D(r0, s1_1_1, 0xE113FCDA, 0xF4FB1226, 0x13160582, 0x03130A0A);
	r1 = D(r1, s1_1_1, 0x030CF919, 0x0BFDE345, 0x0506E51F, 0xF9E100FE);
	r2 = D(r2, s1_1_1, 0x08B8FCFB, 0x050608EC, 0xF20A1911, 0x0B1EF423);
	r3 = D(r3, s1_1_1, 0xFDF7FC1D, 0x03F1F3C5, 0xE91AFCD5, 0x01140AF0);
	r4 = D(r4, s1_1_1, 0xF8A3EB41, 0x0008EDD2, 0x16EB0381, 0xF1D1EE14);
	r5 = D(r5, s1_1_1, 0xFE480EB0, 0xFC02E9FF, 0x02E715DF, 0xEBFEF314);
	r6 = D(r6, s1_1_1, 0xF5C7D73C, 0xFEFE0704, 0xEAF0D528, 0x00F6FBFA);
	r7 = D(r7, s1_1_1, 0x0BF5FDE1, 0xE2E803DA, 0xFBDEE1FD, 0xF3EC02DA);
	r0 = D(r0, s1_1_2, 0xE10FFDF7, 0xB642FD21, 0xEDF42481, 0xFEEBEAFD);
	r1 = D(r1, s1_1_2, 0xFDF70208, 0x020D010A, 0x09F8F900, 0xF5F004D2);
	r2 = D(r2, s1_1_2, 0x01F70D10, 0x02FDF400, 0xEFFAFAF0, 0xE8020607);
	r3 = D(r3, s1_1_2, 0xF4FBEA18, 0x0902060D, 0x0EFDFA19, 0x00FD08E9);
	r4 = D(r4, s1_1_2, 0x1304F80E, 0x05F509FF, 0x0F0500E0, 0x02ED09F2);
	r5 = D(r5, s1_1_2, 0x0ED914E0, 0x01E407FC, 0x0508EA13, 0xE8ED1306);
	r6 = D(r6, s1_1_2, 0xF017EB2E, 0x02FF06FE, 0xF109FA1B, 0xFE02FB03);
	r7 = D(r7, s1_1_2, 0xEDECF513, 0xD0EBF70F, 0xF5F9EC00, 0xD6E3FBD5);
	r0 = D(r0, s1_2_0, 0xFF03F6EA, 0xF1E3033C, 0xE529E2E0, 0x05F905FE);
	r1 = D(r1, s1_2_0, 0x03F1FAF9, 0xFDF8F3CD, 0x02E6FB30, 0x0902082A);
	r2 = D(r2, s1_2_0, 0x12FF1AE1, 0x0E000504, 0x0FFCFD00, 0x0509FD00);
	r3 = D(r3, s1_2_0, 0x040B0211, 0xFF130124, 0xF80B15F5, 0xFF0DF11F);
	r4 = D(r4, s1_2_0, 0x110AFCE4, 0x01100C9D, 0x0FF7FC4D, 0x0DF608F6);
	r5 = D(r5, s1_2_0, 0x0AF1F9B2, 0xFF010401, 0x0723EF10, 0x19F0E8FD);
	r6 = D(r6, s1_2_0, 0xF0F9EEDB, 0xFF0C02FF, 0x0BC8E81A, 0xFF0501FE);
	r7 = D(r7, s1_2_0, 0xFC08FC0F, 0x0208FC06, 0x07DC08DD, 0xF4F9F9F0);
	r0 = D(r0, s1_2_1, 0xEF120401, 0x020017DF, 0xD8C8A18C, 0x08E90512);
	r1 = D(r1, s1_2_1, 0xFEE5EF01, 0xFBF51FF9, 0xFF0D1414, 0x0115EE19);
	r2 = D(r2, s1_2_1, 0xF5D7CA13, 0x02CD0CF7, 0x090DF4E8, 0xF5F10AFE);
	r3 = D(r3, s1_2_1, 0xFCF6E514, 0x0EFE0432, 0x0A23FF07, 0x013D0A16);
	r4 = D(r4, s1_2_1, 0x0A1CFD0C, 0xFE0DEA1C, 0xFD0A05FD, 0xFB02D6FE);
	r5 = D(r5, s1_2_1, 0x0091E402, 0x07E9FEF5, 0x0AD0F0EF, 0x19D2FCD7);
	r6 = D(r6, s1_2_1, 0x05FD0A07, 0xFE26FFFA, 0x033928F6, 0xFD2BFF06);
	r7 = D(r7, s1_2_1, 0xFEF80216, 0x10D915FB, 0x08A0FEDB, 0xFBEAE5F7);
	r0 = D(r0, s1_2_2, 0x020B0116, 0xE3BFFFC0, 0xDFB4D381, 0x043102F5);
	r1 = D(r1, s1_2_2, 0x070502F9, 0x05F30E36, 0x0BFF11E9, 0xEDF5EA0B);
	r2 = D(r2, s1_2_2, 0x08000D1A, 0x0FF715EF, 0x0B24FFF6, 0xF61FDD0F);
	r3 = D(r3, s1_2_2, 0x09060BD9, 0xFCFE0E26, 0x090EFCEA, 0xEE12EB0D);
	r4 = D(r4, s1_2_2, 0x18EC05FF, 0xF205F9E9, 0x07200FF9, 0x06CEF9FB);
	r5 = D(r5, s1_2_2, 0xF3D5F61A, 0x00FE0108, 0xF6F0F8F5, 0x12EC031A);
	r6 = D(r6, s1_2_2, 0xFF18F7EA, 0x00FAFAFD, 0xF204E808, 0x021702FC);
	r7 = D(r7, s1_2_2, 0xF9FEFCFB, 0x0907FC1A, 0xFBF11605, 0xFBEE0213);
	f0 = vec4(r0) * 6.2000124e-05;
	f0 += vec4(-3.889e-03, -5.506e-02, 1.126e-02, 2.104e-02);
	f0 = clamp(f0, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 0), f0);
	f1 = vec4(r1) * 6.2000124e-05;
	f1 += vec4(-9.722e-03, 1.470e-02, -3.440e-02, 2.802e-02);
	f1 = clamp(f1, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 0), f1);
	f2 = vec4(r2) * 6.2000124e-05;
	f2 += vec4(4.407e-02, 3.143e-03, 8.662e-04, 6.702e-02);
	f2 = clamp(f2, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 1), f2);
	f3 = vec4(r3) * 6.2000124e-05;
	f3 += vec4(8.369e-03, 1.700e-02, 1.282e-02, 2.045e-02);
	f3 = clamp(f3, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 1), f3);
	f4 = vec4(r4) * 6.2000124e-05;
	f4 += vec4(-1.678e-02, -1.708e-03, 5.001e-02, -1.794e-02);
	f4 = clamp(f4, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 0), f4);
	f5 = vec4(r5) * 6.2000124e-05;
	f5 += vec4(2.311e-02, 1.188e-02, 9.613e-03, 4.143e-02);
	f5 = clamp(f5, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 0), f5);
	f6 = vec4(r6) * 6.2000124e-05;
	f6 += vec4(2.695e-02, 3.195e-03, 3.155e-03, 1.011e-03);
	f6 = clamp(f6, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 1), f6);
	f7 = vec4(r7) * 6.2000124e-05;
	f7 += vec4(9.285e-03, 3.118e-03, -4.753e-04, -2.166e-03);
	f7 = clamp(f7, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 1), f7);
}

//!DESC [CuNNy_8x32_DS_vk] -conv4
//!HOOK LUMA
//!COMPUTE 32 16 8 8
//!BIND conv3
//!BIND LUMA
//!SAVE conv4
//!WIDTH LUMA.w 4 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_spirv_intrinsics : require
spirv_instruction (extensions = ["SPV_KHR_integer_dot_product"], capabilities = [6019, 6018], id = 4450)
int dp4(int a, int b, spirv_literal int fmt);
#define D(r, s, a, b, c, d) r + ivec4(dp4(s, a, 0), dp4(s, b, 0), dp4(s, c, 0), dp4(s, d, 0))
shared int G[8][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(4, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			vec2 p;
			vec4 r, g, b, a;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(1, 1)) * conv3_pt;
			r = conv3_gather(p, 0);
			g = conv3_gather(p, 1);
			b = conv3_gather(p, 2);
			a = conv3_gather(p, 3);
			vec4 v0 = vec4(r.w, g.w, b.w, a.w) * 1.0000000e+00;
			vec4 v1 = vec4(r.z, g.z, b.z, a.z) * 1.0000000e+00;
			vec4 v2 = vec4(r.x, g.x, b.x, a.x) * 1.0000000e+00;
			vec4 v3 = vec4(r.y, g.y, b.y, a.y) * 1.0000000e+00;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(3, 1)) * conv3_pt;
			r = conv3_gather(p, 0);
			g = conv3_gather(p, 1);
			b = conv3_gather(p, 2);
			a = conv3_gather(p, 3);
			vec4 v4 = vec4(r.w, g.w, b.w, a.w) * 1.0000000e+00;
			vec4 v5 = vec4(r.z, g.z, b.z, a.z) * 1.0000000e+00;
			vec4 v6 = vec4(r.x, g.x, b.x, a.x) * 1.0000000e+00;
			vec4 v7 = vec4(r.y, g.y, b.y, a.y) * 1.0000000e+00;
			G[0][ay][ax] = int(packSnorm4x8(v0));
			G[1][ay][ax] = int(packSnorm4x8(v1));
			G[2][ay][ax] = int(packSnorm4x8(v2));
			G[3][ay][ax] = int(packSnorm4x8(v3));
			G[4][ay][ax] = int(packSnorm4x8(v4));
			G[5][ay][ax] = int(packSnorm4x8(v5));
			G[6][ay][ax] = int(packSnorm4x8(v6));
			G[7][ay][ax] = int(packSnorm4x8(v7));
		}
	}
	barrier();
	int s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;
	ivec4 r0, r1, r2, r3, r4, r5, r6, r7;
	vec4 f0, f1, f2, f3, f4, f5, f6, f7;
	r0 = ivec4(0); r1 = ivec4(0); r2 = ivec4(0); r3 = ivec4(0); r4 = ivec4(0); r5 = ivec4(0); r6 = ivec4(0); r7 = ivec4(0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2]; s1_0_0 = G[1][xy.y+0][xy.x+0];
	s1_0_1 = G[1][xy.y+0][xy.x+1]; s1_0_2 = G[1][xy.y+0][xy.x+2];
	s1_1_0 = G[1][xy.y+1][xy.x+0]; s1_1_1 = G[1][xy.y+1][xy.x+1];
	s1_1_2 = G[1][xy.y+1][xy.x+2]; s1_2_0 = G[1][xy.y+2][xy.x+0];
	s1_2_1 = G[1][xy.y+2][xy.x+1]; s1_2_2 = G[1][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xFAD3BCFF, 0xD0F4EB07, 0xFB02F8FE, 0xFAFC0405);
	r1 = D(r1, s0_0_0, 0x09FCF901, 0xFAFCEA08, 0x1B0BD60F, 0xF607F50C);
	r2 = D(r2, s0_0_0, 0xE289ECF6, 0xFCF307F1, 0x1AEBE504, 0xFC17EDFF);
	r3 = D(r3, s0_0_0, 0x0F0104FF, 0x1918FD05, 0x32EE180B, 0xF400FAFF);
	r4 = D(r4, s0_0_0, 0x12F2FC00, 0xBDFAF406, 0x11048124, 0x2E0C0B02);
	r5 = D(r5, s0_0_0, 0x23091F0E, 0xD3F60002, 0x0CE40901, 0xF70AC2FE);
	r6 = D(r6, s0_0_0, 0xFBF7FF06, 0x10F01803, 0x220B0FF8, 0xF721E606);
	r7 = D(r7, s0_0_0, 0x000E06F3, 0x0DFDFF02, 0x0BE80501, 0xFF03FCFF);
	r0 = D(r0, s0_0_1, 0xF7FD0F04, 0x1A071AF3, 0x01020105, 0xE6FE271A);
	r1 = D(r1, s0_0_1, 0xF7F3170D, 0x23FB150C, 0xE10502EF, 0x03FB330E);
	r2 = D(r2, s0_0_1, 0x1CF01D08, 0x0E1703F9, 0xF414BEFC, 0x000DFA09);
	r3 = D(r3, s0_0_1, 0xFCFBFFFC, 0xF1260CE5, 0xDAF9E4F1, 0x210DFEF3);
	r4 = D(r4, s0_0_1, 0xFEF8E2EF, 0x04F22C26, 0xF9F9A9EF, 0x0609ED11);
	r5 = D(r5, s0_0_1, 0x0C15E9DF, 0x0D1CEB12, 0xF1D9FE0C, 0x20F50510);
	r6 = D(r6, s0_0_1, 0xE9EBFD00, 0x26F10402, 0x0DF60619, 0xFB02D717);
	r7 = D(r7, s0_0_1, 0xFF0D06F1, 0xDDEF0AFB, 0xF9F819FA, 0x08030003);
	r0 = D(r0, s0_0_2, 0xEFFD07FC, 0xF9F915FD, 0x00FDFF04, 0x08EEFCF5);
	r1 = D(r1, s0_0_2, 0x030D0103, 0xF6FE03DD, 0xFFF90508, 0x00F7FC08);
	r2 = D(r2, s0_0_2, 0xF3F610FB, 0xFEFE1313, 0x0208F318, 0xFA120816);
	r3 = D(r3, s0_0_2, 0xFAFA0300, 0xFD15ED12, 0x01080405, 0xF7FDFD01);
	r4 = D(r4, s0_0_2, 0x00000B0A, 0x1FD10404, 0x17070B30, 0xFA110D01);
	r5 = D(r5, s0_0_2, 0x2CF5F013, 0x060F03F4, 0x1D0D0D15, 0x142DF222);
	r6 = D(r6, s0_0_2, 0xF5FC06FE, 0xFAED0BEE, 0xECFBFDFA, 0x0013C4FC);
	r7 = D(r7, s0_0_2, 0xFBFEFAF4, 0x20E3FC00, 0xEF03FE10, 0x0100FF02);
	r0 = D(r0, s0_1_0, 0x9817E806, 0x26DEFF03, 0xF40200FF, 0x03FCE9F5);
	r1 = D(r1, s0_1_0, 0xDF120015, 0x2713F603, 0x0207FC08, 0xEC13F3F7);
	r2 = D(r2, s0_1_0, 0x0DE3F60B, 0x29EE00FD, 0xF80DE102, 0x55C3E322);
	r3 = D(r3, s0_1_0, 0xE9FFFF02, 0x270F190C, 0x12CC1304, 0xB7030307);
	r4 = D(r4, s0_1_0, 0x100502E8, 0xE40CF5E0, 0x3E025EC2, 0xEDFD13F4);
	r5 = D(r5, s0_1_0, 0x35FCCCEA, 0x4008051D, 0xEEFE00FF, 0x6D08FE10);
	r6 = D(r6, s0_1_0, 0x18FE07F3, 0x7FBA01EE, 0xE909010B, 0x27FF250D);
	r7 = D(r7, s0_1_0, 0xFAF71E14, 0x56041E05, 0xCE0B1106, 0x0A05FC00);
	r0 = D(r0, s0_1_1, 0x07E8D3AD, 0x24EDF4F3, 0x1C04FF1A, 0xE2F4F4F7);
	r1 = D(r1, s0_1_1, 0xF4CE0014, 0x24161517, 0xF7F7FD0F, 0x0EFB0432);
	r2 = D(r2, s0_1_1, 0x20EF01FF, 0x11F3F72B, 0x1301FDFB, 0x1D20F700);
	r3 = D(r3, s0_1_1, 0xF5110816, 0x2526F228, 0x3AFAE326, 0xCD080322);
	r4 = D(r4, s0_1_1, 0xD00CD418, 0x0D120B5F, 0xD3132C06, 0xF20DF22D);
	r5 = D(r5, s0_1_1, 0xE414E4EB, 0x1CDF0519, 0x0020F7BC, 0x15E7110F);
	r6 = D(r6, s0_1_1, 0x2601FD34, 0xCAE8DED1, 0x28E5FA0C, 0xEFF920FF);
	r7 = D(r7, s0_1_1, 0xE3160DF8, 0xDE0ECDD0, 0x0E0404FB, 0x0409F819);
	r0 = D(r0, s0_1_2, 0x1208F10F, 0xFCF4FFFA, 0xF9FC0204, 0xF1E9E9E1);
	r1 = D(r1, s0_1_2, 0xF6E90202, 0x1C0E0E3A, 0xF7F6FBF1, 0x000206FA);
	r2 = D(r2, s0_1_2, 0x0BEF0BE8, 0xDBFFE917, 0x14FECA61, 0x0E08EA0D);
	r3 = D(r3, s0_1_2, 0x040901FD, 0x02071722, 0x1807DB07, 0x15FF0314);
	r4 = D(r4, s0_1_2, 0xF0FA0101, 0xBE000E81, 0xEAF52B24, 0x0F070DB1);
	r5 = D(r5, s0_1_2, 0x06FEFD38, 0x0DF7EC2B, 0xFB040624, 0x17F0FEFD);
	r6 = D(r6, s0_1_2, 0x08FF0512, 0x06FE009D, 0xFDF904E1, 0x1E000C10);
	r7 = D(r7, s0_1_2, 0x0AFC0E05, 0xF4F50BEF, 0xF40515FE, 0xFB01FD0C);
	r0 = D(r0, s0_2_0, 0x0B00C416, 0xFA090805, 0xF6FC01F9, 0x09080909);
	r1 = D(r1, s0_2_0, 0x7F0100F9, 0x60F7E810, 0x900404FB, 0x06FE0206);
	r2 = D(r2, s0_2_0, 0x56E10E14, 0x33F4231E, 0x81F31B09, 0xE2F2E9FF);
	r3 = D(r3, s0_2_0, 0x0DFF03F7, 0x3D0EE80C, 0x8106F6D4, 0xCC080101);
	r4 = D(r4, s0_2_0, 0x3002FF05, 0x7FFF1A44, 0x81F631FE, 0x81110A10);
	r5 = D(r5, s0_2_0, 0xECFF2410, 0x52F0F905, 0x7FFB0412, 0x640C0C33);
	r6 = D(r6, s0_2_0, 0xCD02FC0C, 0xF9FB0402, 0x15051110, 0xE5F1EDED);
	r7 = D(r7, s0_2_0, 0x1BFEE0E5, 0x09EFF9EF, 0x810D06FB, 0xE2FEFF01);
	r0 = D(r0, s0_2_1, 0x0B01CDB7, 0xC003050E, 0xFCFAFE2E, 0x16120E44);
	r1 = D(r1, s0_2_1, 0xF404F714, 0x3EF700F4, 0xD30B0002, 0x030AF616);
	r2 = D(r2, s0_2_1, 0x1CFBCE1F, 0xEEF3DEC3, 0xFDF628D1, 0x40FA1081);
	r3 = D(r3, s0_2_1, 0xFDFD030E, 0xE60C012D, 0x231401DC, 0xF20006FD);
	r4 = D(r4, s0_2_1, 0xFA05DDE2, 0x35F60E2B, 0x7206DACA, 0x080DD913);
	r5 = D(r5, s0_2_1, 0x26040DFF, 0xEBFB1063, 0x0B2300DB, 0xB7CF2F33);
	r6 = D(r6, s0_2_1, 0x0A0400EB, 0xE50CFAB6, 0x09F90819, 0xFFF8FFF3);
	r7 = D(r7, s0_2_1, 0xE7F20EDC, 0x81FDF082, 0x1005162D, 0x0100FD12);
	r0 = D(r0, s0_2_2, 0xE5FACCB0, 0xFE00ED2D, 0x04FFFCED, 0x06011040);
	r1 = D(r1, s0_2_2, 0x14F80312, 0xF7FCECCA, 0xFF07FECA, 0x0BFFFAEC);
	r2 = D(r2, s0_2_2, 0x01FF2309, 0x1F0109B6, 0xEAFE2B47, 0xFD03F781);
	r3 = D(r3, s0_2_2, 0xF80003F0, 0xF8FFF739, 0xF60B0B09, 0x04FF02F1);
	r4 = D(r4, s0_2_2, 0x0901E297, 0x2B14051A, 0x28FC1681, 0x1208FA7F);
	r5 = D(r5, s0_2_2, 0xE8F61D2B, 0xF7F50784, 0x0500F381, 0xE50B20E6);
	r6 = D(r6, s0_2_2, 0x0001F710, 0x0BF2E204, 0x0BFE0A0F, 0xF2FBF47F);
	r7 = D(r7, s0_2_2, 0xF9FAE07F, 0xFDEFE976, 0x18FD033F, 0x0501FF01);
	r0 = D(r0, s1_0_0, 0x17F206F7, 0x0E0D080B, 0xFD0102FF, 0xF3FE06F4);
	r1 = D(r1, s1_0_0, 0x0303FA06, 0xFFF2F909, 0xEDE9F21C, 0xFCFF09F9);
	r2 = D(r2, s1_0_0, 0x01F413FD, 0xDEF9EE09, 0xE715FDEE, 0xFEFCFD0D);
	r3 = D(r3, s1_0_0, 0x00FE0204, 0xE200FCF6, 0x0CF2F90E, 0x1003F600);
	r4 = D(r4, s1_0_0, 0xF2F7F6FB, 0xEBF312FD, 0x04FB1510, 0x090AFBE5);
	r5 = D(r5, s1_0_0, 0x1120EBDF, 0xFDF9FF15, 0x26FFF0F7, 0xF309F6FA);
	r6 = D(r6, s1_0_0, 0xFB010401, 0x00F31A01, 0xF9080307, 0xBDE2FF13);
	r7 = D(r7, s1_0_0, 0xF2FF02FA, 0xFEDD05F5, 0x0A03FBFD, 0xFE0601FC);
	r0 = D(r0, s1_0_1, 0xF9C7FFE2, 0x0708FA00, 0xFBFF000C, 0x0303FBD4);
	r1 = D(r1, s1_0_1, 0x020AFCFF, 0x09EDFD15, 0x04FC03EC, 0x02E7FBBF);
	r2 = D(r2, s1_0_1, 0x0208FFF8, 0xF906FE13, 0xFB16F226, 0x10EFFA20);
	r3 = D(r3, s1_0_1, 0x05FEFE05, 0xF0E50C37, 0xE900FFF7, 0xFF06011E);
	r4 = D(r4, s1_0_1, 0x010AF4F1, 0xEB0EEACB, 0xE5DEEED7, 0xCAF7F5CB);
	r5 = D(r5, s1_0_1, 0xF80526FF, 0xFB0AF627, 0x1EE2F524, 0xF20318FF);
	r6 = D(r6, s1_0_1, 0xF2F50201, 0x1708F20D, 0xF9FDFCF9, 0xE0E6E817);
	r7 = D(r7, s1_0_1, 0xFDE9041F, 0x06FD0508, 0x241AF8FE, 0xFBFFFF03);
	r0 = D(r0, s1_0_2, 0xECD701FA, 0x08DA0C1F, 0xFEF40304, 0x1607FBD9);
	r1 = D(r1, s1_0_2, 0x07031500, 0xFE0C0EEB, 0x06ED00EC, 0x0CFD12BF);
	r2 = D(r2, s1_0_2, 0x01E707FB, 0x0EF0FF21, 0xEC210D1B, 0xF9040918);
	r3 = D(r3, s1_0_2, 0x03F9FEFD, 0xE8D31049, 0x06D6FE07, 0xFE030C08);
	r4 = D(r4, s1_0_2, 0xFD10FDF3, 0x2EFDEFFF, 0xFF46FAD5, 0xDE031117);
	r5 = D(r5, s1_0_2, 0x02F90524, 0x1005001E, 0xECEBED0F, 0x0DD3EC33);
	r6 = D(r6, s1_0_2, 0x08FEFCF3, 0x0214EBEF, 0x07FF08F9, 0x1304F90B);
	r7 = D(r7, s1_0_2, 0xF6F61903, 0xEFD4F8F8, 0xF60709F0, 0xFFFF0104);
	r0 = D(r0, s1_1_0, 0xEB1F06EF, 0x01F50CF9, 0x0003FE05, 0xF80707FB);
	r1 = D(r1, s1_1_0, 0x0E000808, 0xFD0F1404, 0xF6FBE424, 0xF80602F6);
	r2 = D(r2, s1_1_0, 0xE60DF812, 0x05090308, 0xEEFDFF01, 0x15100CE3);
	r3 = D(r3, s1_1_0, 0xFFFFFB00, 0x08EDCBF9, 0x1BF319EB, 0xFBFC0BFE);
	r4 = D(r4, s1_1_0, 0xFB030909, 0xF70A01FE, 0x2D0FFDE5, 0xEC061DE6);
	r5 = D(r5, s1_1_0, 0x36F524F0, 0xFA00E901, 0x18FA0225, 0xEF0E08DF);
	r6 = D(r6, s1_1_0, 0xFE03FE03, 0x00F6ECFE, 0xFEF9000B, 0x01050009);
	r7 = D(r7, s1_1_0, 0xFEFD0FFD, 0x0FFC11F1, 0x0D031007, 0xFD01FEFE);
	r0 = D(r0, s1_1_1, 0x0CFEFCEE, 0xF8DD030A, 0x06FEF530, 0xF7E8FDDB);
	r1 = D(r1, s1_1_1, 0x0B0306F0, 0xFCEA0507, 0xF4F3DE10, 0x00FB13E8);
	r2 = D(r2, s1_1_1, 0xF9100712, 0xF4D72601, 0xFEE3EA30, 0xF9D80FF3);
	r3 = D(r3, s1_1_1, 0xF6F5020C, 0x00ECC91A, 0x06DEFDF6, 0xFBE804FD);
	r4 = D(r4, s1_1_1, 0xF4EBE8F3, 0xEDE604E0, 0x0A12CC09, 0xD6E30006);
	r5 = D(r5, s1_1_1, 0x0A07E5DB, 0xDEFBD202, 0x0100F10A, 0xF507FA10);
	r6 = D(r6, s1_1_1, 0xFC1404F7, 0x0816311E, 0x19FA09F9, 0x190D0AE4);
	r7 = D(r7, s1_1_1, 0x0AFAEBF8, 0xFD2EF3E0, 0x13FCFE16, 0x0401F8FC);
	r0 = D(r0, s1_1_2, 0xFC1FF4E3, 0xFED400F1, 0xFF010702, 0xF3E903FB);
	r1 = D(r1, s1_1_2, 0xF5EE1C0E, 0x100B0D11, 0xEEF9EA09, 0xFB1302E7);
	r2 = D(r2, s1_1_2, 0xFFC30817, 0x00DCEF09, 0x1701FF09, 0xF5320D16);
	r3 = D(r3, s1_1_2, 0xFF07030F, 0x0D1C1B08, 0x0C070E15, 0xFD0C0B0C);
	r4 = D(r4, s1_1_2, 0x0B25CE00, 0xF5F6E4DD, 0xE7E681FD, 0x2616F3F8);
	r5 = D(r5, s1_1_2, 0xFFE303FC, 0x05FEFA19, 0x11F01D43, 0x1E9BC119);
	r6 = D(r6, s1_1_2, 0x07FD08F8, 0x02E20BFC, 0xF400FEF2, 0xF1CF04ED);
	r7 = D(r7, s1_1_2, 0x02030A08, 0xFDDD1901, 0xFC0308F8, 0x0006FF03);
	r0 = D(r0, s1_2_0, 0xFA080AFE, 0xE9FC0207, 0x02FB0001, 0x1102F7FE);
	r1 = D(r1, s1_2_0, 0x10FF07F9, 0x02000FFA, 0x19FD14FF, 0x0AFE0902);
	r2 = D(r2, s1_2_0, 0x000B0100, 0xF7060003, 0x1121F4FD, 0xE2FD06F7);
	r3 = D(r3, s1_2_0, 0xFFFF0102, 0xF6090C01, 0x04F70BEC, 0xFC0605FB);
	r4 = D(r4, s1_2_0, 0xF7FC0B07, 0x19FBF504, 0xEA0C15FF, 0x14FB0002);
	r5 = D(r5, s1_2_0, 0x00FEF10E, 0x0C09FB06, 0xEB03FE02, 0x1B0A0C15);
	r6 = D(r6, s1_2_0, 0xFCFF0103, 0xF3FAFB11, 0xFE04FEF9, 0x03000AFD);
	r7 = D(r7, s1_2_0, 0xFEFE10FC, 0xF4E50C14, 0xF706FCFF, 0x0100FE03);
	r0 = D(r0, s1_2_1, 0x2CED0201, 0xFFD4E101, 0x03010701, 0x00F9EEF9);
	r1 = D(r1, s1_2_1, 0x080204F4, 0x1D07080C, 0xF70CEBF8, 0x060708FA);
	r2 = D(r2, s1_2_1, 0x000C080C, 0x0204FF04, 0xF70C080A, 0xF21DFD09);
	r3 = D(r3, s1_2_1, 0x08FCFE03, 0x08E0D708, 0xEC0AF003, 0x0301FFF6);
	r4 = D(r4, s1_2_1, 0x0F0E090C, 0xD515D816, 0xF04701FD, 0x130AF6DC);
	r5 = D(r5, s1_2_1, 0xE54CEEFE, 0xEAFADEEB, 0xECEDF3F9, 0xDACDF433);
	r6 = D(r6, s1_2_1, 0x02020101, 0xF7F008F6, 0x060505F1, 0xF904ECF9);
	r7 = D(r7, s1_2_1, 0xFAFAE4F5, 0x1009EEFA, 0x22F0F619, 0x0300FF03);
	r0 = D(r0, s1_2_2, 0xF00CF7F5, 0xF1EB15F8, 0xFDFEFEFB, 0x0AED0E03);
	r1 = D(r1, s1_2_2, 0xF8E9070B, 0xF4DBF805, 0xFFF2F302, 0x03F30307);
	r2 = D(r2, s1_2_2, 0x03E718F7, 0xEDE107F9, 0xF0EA0715, 0x1E050A05);
	r3 = D(r3, s1_2_2, 0xFF060007, 0xFFFD010A, 0xFFECFB00, 0x05FA03FD);
	r4 = D(r4, s1_2_2, 0xFC07F202, 0x2CFD1920, 0x59BA8132, 0x09EE0A07);
	r5 = D(r5, s1_2_2, 0x12020301, 0xE108D8E5, 0x1FF0111B, 0x9393B8DC);
	r6 = D(r6, s1_2_2, 0x06010103, 0xFFFEE4FE, 0x011B0DF7, 0x0D08F6F1);
	r7 = D(r7, s1_2_2, 0xF014FC00, 0xD2E7ECFE, 0xFB12FDF9, 0x0004FF00);
	s0_0_0 = G[2][xy.y+0][xy.x+0]; s0_0_1 = G[2][xy.y+0][xy.x+1];
	s0_0_2 = G[2][xy.y+0][xy.x+2]; s0_1_0 = G[2][xy.y+1][xy.x+0];
	s0_1_1 = G[2][xy.y+1][xy.x+1]; s0_1_2 = G[2][xy.y+1][xy.x+2];
	s0_2_0 = G[2][xy.y+2][xy.x+0]; s0_2_1 = G[2][xy.y+2][xy.x+1];
	s0_2_2 = G[2][xy.y+2][xy.x+2]; s1_0_0 = G[3][xy.y+0][xy.x+0];
	s1_0_1 = G[3][xy.y+0][xy.x+1]; s1_0_2 = G[3][xy.y+0][xy.x+2];
	s1_1_0 = G[3][xy.y+1][xy.x+0]; s1_1_1 = G[3][xy.y+1][xy.x+1];
	s1_1_2 = G[3][xy.y+1][xy.x+2]; s1_2_0 = G[3][xy.y+2][xy.x+0];
	s1_2_1 = G[3][xy.y+2][xy.x+1]; s1_2_2 = G[3][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x19F5FDFF, 0x05EDF906, 0x010300FE, 0xFF17FB04);
	r1 = D(r1, s0_0_0, 0xF5FA09FC, 0xFAF7010C, 0xFB0EFA05, 0xF50B0704);
	r2 = D(r2, s0_0_0, 0x03F904F8, 0x07F6F60D, 0xE601FA14, 0x0518F7FD);
	r3 = D(r3, s0_0_0, 0xFCFD0100, 0xF009FD03, 0xFA0CF705, 0xFA000601);
	r4 = D(r4, s0_0_0, 0x01F3F911, 0xEEFFFC1A, 0x0C95FD11, 0xEF1BFB19);
	r5 = D(r5, s0_0_0, 0xF3F7031D, 0xF30606FC, 0x0AD305FC, 0xED0C06EE);
	r6 = D(r6, s0_0_0, 0x0208FEFD, 0xE7DF0915, 0xFFFA0000, 0xE7F8000B);
	r7 = D(r7, s0_0_0, 0x0AEC030B, 0x03010304, 0x09FAF402, 0x0204FFFF);
	r0 = D(r0, s0_0_1, 0x03BF0043, 0x0C27FE16, 0x02020102, 0xFF180C02);
	r1 = D(r1, s0_0_1, 0x030905FB, 0x06F605FF, 0xFD0CF906, 0xF8EC0F03);
	r2 = D(r2, s0_0_1, 0x011A050C, 0xFBF818F3, 0xFDF2E9F0, 0x04080AF5);
	r3 = D(r3, s0_0_1, 0x01F80001, 0xFC0C04D8, 0x03EEEBEC, 0xFF1208F5);
	r4 = D(r4, s0_0_1, 0xF2EC13D3, 0x0CDC28D1, 0xEBDBFEF7, 0xFEDC04CF);
	r5 = D(r5, s0_0_1, 0x01D7FC07, 0xFEFB0AFE, 0x14F3FA2E, 0x0A05F6E0);
	r6 = D(r6, s0_0_1, 0x020EF4FF, 0x45F8DF0D, 0xFBF700FD, 0x0423FCCA);
	r7 = D(r7, s0_0_1, 0xF506F406, 0xF70F1917, 0x03100715, 0x0204FC00);
	r0 = D(r0, s0_0_2, 0x01E903EF, 0x0805E90F, 0x01FC0101, 0x0508FD16);
	r1 = D(r1, s0_0_2, 0xF8F403F8, 0x0DEBFFEA, 0x0207F003, 0x03F90D0B);
	r2 = D(r2, s0_0_2, 0xFCF8FE14, 0x00ECFC0D, 0xF5D6F8F7, 0xFFF401FB);
	r3 = D(r3, s0_0_2, 0x0203FE02, 0xE5FF05F6, 0xF3FCFF04, 0x0A03F004);
	r4 = D(r4, s0_0_2, 0xFF090FFA, 0x17D80956, 0x18000EEB, 0xF802FAEA);
	r5 = D(r5, s0_0_2, 0xFF11110B, 0xFFFC0BF6, 0xF8FD14F6, 0xFFDD0BC5);
	r6 = D(r6, s0_0_2, 0x02020CF7, 0xE3EAFBF9, 0xFCFE0EF5, 0x0112F5CD);
	r7 = D(r7, s0_0_2, 0xFAFFE705, 0x100B05F2, 0xFB00FB15, 0x01FFFF00);
	r0 = D(r0, s0_1_0, 0x19D1FBF9, 0xF60B0304, 0xFD05FEFE, 0x0516FFFB);
	r1 = D(r1, s0_1_0, 0xFCFC06FE, 0xFAFD0000, 0x0123FDF9, 0xF90A0504);
	r2 = D(r2, s0_1_0, 0xEFE0FD02, 0xE6B80405, 0x06F0F0EE, 0xFE1DF506);
	r3 = D(r3, s0_1_0, 0xFDFF0000, 0xFEF20A0B, 0x1017E7E7, 0x0008F9FF);
	r4 = D(r4, s0_1_0, 0xEEDA0BFB, 0xF21515F5, 0xFEB222F9, 0x0DF6F9F6);
	r5 = D(r5, s0_1_0, 0xF6FDF3F0, 0x00ED0BFC, 0x05E2FEE7, 0x07FCFD0C);
	r6 = D(r6, s0_1_0, 0xFEFD0402, 0x45FCF6E2, 0xFDFD04FD, 0xFA161201);
	r7 = D(r7, s0_1_0, 0x0DEFF4F4, 0xEFEA000A, 0x07FC0100, 0xFF04FF00);
	r0 = D(r0, s0_1_1, 0xEBF6FF09, 0xFBF9FF05, 0xFEF80302, 0xF7E8FE0A);
	r1 = D(r1, s0_1_1, 0x01F9F7FF, 0xFD09F710, 0xF804ED00, 0xF605FF00);
	r2 = D(r2, s0_1_1, 0x0529FDFD, 0xF4F5F715, 0x0A04E9B3, 0x01DBEC00);
	r3 = D(r3, s0_1_1, 0x0220FE04, 0xFCF70DF2, 0xFD02DCF8, 0x06060101);
	r4 = D(r4, s0_1_1, 0xF9DE02FC, 0x03F1EA2B, 0xDEA9F5F2, 0xFFF8F3FE);
	r5 = D(r5, s0_1_1, 0x0CDD44C5, 0x02E806E7, 0x03E1010E, 0x1AFEFC1D);
	r6 = D(r6, s0_1_1, 0xFCFD06FA, 0x810E07FD, 0xF5EFF80F, 0x0B050FF6);
	r7 = D(r7, s0_1_1, 0x00F5F1E3, 0x100C1500, 0xF4001412, 0xFD0004FE);
	r0 = D(r0, s0_1_2, 0xFAFA09FB, 0xF306090A, 0xFBFB0203, 0xF7F6E60D);
	r1 = D(r1, s0_1_2, 0x0BF7ECFE, 0x05060C03, 0x01FAEE05, 0xFC0AF9F8);
	r2 = D(r2, s0_1_2, 0x11F21AFF, 0x060D0FEF, 0xE828C4E5, 0xF9F5EF07);
	r3 = D(r3, s0_1_2, 0xF9FEFDFE, 0x01FCE8F8, 0x0011FBFD, 0x01F9EAFB);
	r4 = D(r4, s0_1_2, 0x05011DEE, 0xFDF20F04, 0x0903140E, 0xF6F50107);
	r5 = D(r5, s0_1_2, 0xE405ACE7, 0xFFE6EDF5, 0xF2EC0B04, 0x130A0231);
	r6 = D(r6, s0_1_2, 0x03020404, 0x2D28280E, 0xFFFA3305, 0x07F5FBF3);
	r7 = D(r7, s0_1_2, 0xECFBFBF7, 0xF8FDBC0D, 0x00F8E715, 0x01FD0000);
	r0 = D(r0, s0_2_0, 0x0EF202F6, 0xE625FA07, 0x00FA03FF, 0xE3130D10);
	r1 = D(r1, s0_2_0, 0xFEF10007, 0x0109FEF9, 0x05F40AF9, 0xF9F8FF07);
	r2 = D(r2, s0_2_0, 0xF4E40805, 0x0110F9F1, 0x0DF301E5, 0xFF19DEFF);
	r3 = D(r3, s0_2_0, 0x010001FD, 0xF2F906F8, 0x010DEBEC, 0xF80BFB00);
	r4 = D(r4, s0_2_0, 0x0FF0F102, 0xE5121509, 0x20DCECEE, 0xE801F306);
	r5 = D(r5, s0_2_0, 0x10D80015, 0xFDE50303, 0x00100902, 0xE702EEFE);
	r6 = D(r6, s0_2_0, 0x01FDFD02, 0xEEFF0C14, 0x00010503, 0xFBFF00E6);
	r7 = D(r7, s0_2_0, 0xFE00F9FF, 0xF7FE1200, 0x0414FBFA, 0x00000100);
	r0 = D(r0, s0_2_1, 0x00020FFF, 0xFDF5FF0A, 0xFEFC0509, 0xF801F819);
	r1 = D(r1, s0_2_1, 0x0715FBF9, 0xF60F0814, 0xF108EEFC, 0x0007FCFF);
	r2 = D(r2, s0_2_1, 0xF4120A0F, 0x0A0FF812, 0x0D0305EB, 0x02F9E1F3);
	r3 = D(r3, s0_2_1, 0xFD00010B, 0x0502FA09, 0xF60CE1F3, 0x0300F701);
	r4 = D(r4, s0_2_1, 0xF0E40F01, 0x0701F61A, 0x06D4EAB1, 0xF419F121);
	r5 = D(r5, s0_2_1, 0x180D0905, 0x0005F4EC, 0xFCF2F1F7, 0x04D822CD);
	r6 = D(r6, s0_2_1, 0xFCFFFEF8, 0x2DF808F4, 0xFEFBFEFF, 0xFEFDFAF9);
	r7 = D(r7, s0_2_1, 0x0A07040C, 0x030B060E, 0xEDE1FE0D, 0x00000202);
	r0 = D(r0, s0_2_2, 0x0A05F708, 0x0F12FCEB, 0x00FFFDFF, 0x030A05ED);
	r1 = D(r1, s0_2_2, 0xFD09F4EC, 0xFCF80810, 0xFA01F3EC, 0x02FE0000);
	r2 = D(r2, s0_2_2, 0xFEF3F404, 0x09FCE4FD, 0xFDF2E706, 0xF8F6FEF8);
	r3 = D(r3, s0_2_2, 0x03FDFBFE, 0xFCF5F5F6, 0xFA0008F6, 0xF805FBFD);
	r4 = D(r4, s0_2_2, 0xFC050B06, 0xF5E915DE, 0x0D1F223C, 0xF5ECF3EE);
	r5 = D(r5, s0_2_2, 0x08F2FFF6, 0x06F5F7FE, 0xF3F20E07, 0x1AEA1246);
	r6 = D(r6, s0_2_2, 0x03020103, 0xF3F6EEF8, 0xFE010002, 0x01FFFDFD);
	r7 = D(r7, s0_2_2, 0xFA060306, 0xF30B0A00, 0xF608FA08, 0x00010101);
	r0 = D(r0, s1_0_0, 0xF3EBF519, 0x0A05F50D, 0xFF0302FF, 0xFEEF000C);
	r1 = D(r1, s1_0_0, 0x01FF04FF, 0xECF7F802, 0x0C14F50A, 0xF8F1FD01);
	r2 = D(r2, s1_0_0, 0x00030108, 0xF61B0B13, 0xF7070F1D, 0xFBDBFA11);
	r3 = D(r3, s1_0_0, 0x0101FD02, 0xF9F2FEF8, 0x0F000219, 0xFAFDF7FE);
	r4 = D(r4, s1_0_0, 0xFFFBF0F4, 0xFEDE12E5, 0xF8F0F81A, 0x02101912);
	r5 = D(r5, s1_0_0, 0x15F50AEC, 0x0501F2FD, 0x0BD80F02, 0x12FC0014);
	r6 = D(r6, s1_0_0, 0x02020906, 0x05FC16F0, 0xFEEB0700, 0xFDEC28E8);
	r7 = D(r7, s1_0_0, 0xFE1204FE, 0x0703FB09, 0xFF09FC03, 0x00000401);
	r0 = D(r0, s1_0_1, 0xC7D6DA19, 0xD914080A, 0x04050400, 0xFBDD0F15);
	r1 = D(r1, s1_0_1, 0x0206F30E, 0x1A030803, 0xFF010BFF, 0x03E60901);
	r2 = D(r2, s1_0_1, 0xF61E0311, 0x050C140F, 0x14240C15, 0xF01411E1);
	r3 = D(r3, s1_0_1, 0xF8FA0000, 0x02FF05FA, 0x140106ED, 0xFFFFFF01);
	r4 = D(r4, s1_0_1, 0x1CFF0B02, 0xF1B30F2A, 0x06024EF2, 0xF0A1FD02);
	r5 = D(r5, s1_0_1, 0xBDFDF11D, 0xFE12F2F4, 0xE0F810E7, 0x0C11FE0B);
	r6 = D(r6, s1_0_1, 0x1C0EF5FD, 0x120413FF, 0x00FAFC06, 0x2A0C00F2);
	r7 = D(r7, s1_0_1, 0x0AF90403, 0xEA01EBFA, 0xE2F10C05, 0x030204FF);
	r0 = D(r0, s1_0_2, 0xEDF9F710, 0xEFF9EB08, 0x00020101, 0xDFD508FC);
	r1 = D(r1, s1_0_2, 0xF8F709F4, 0x0B020906, 0x010BF9FC, 0xFFD9FF05);
	r2 = D(r2, s1_0_2, 0x0308FDF8, 0x00E701F1, 0x090612FA, 0x0BEA04F5);
	r3 = D(r3, s1_0_2, 0x0701FBFC, 0x1B04F7F7, 0xF9F80A01, 0xF8F403FB);
	r4 = D(r4, s1_0_2, 0xFCE40106, 0xCAB122E3, 0x0ED5EDBF, 0x0D081C25);
	r5 = D(r5, s1_0_2, 0x0E040423, 0xFE0F0A06, 0xF807FDD5, 0x16000319);
	r6 = D(r6, s1_0_2, 0x0D00FA02, 0xF9F50C18, 0xFBF5F7FE, 0x01FEFE16);
	r7 = D(r7, s1_0_2, 0x0B06ECFE, 0xFA1D0106, 0x01FE0102, 0x01000001);
	r0 = D(r0, s1_1_0, 0xDBF0BBFC, 0xFBEEE1FB, 0x0404F8FC, 0xF6EA0FF9);
	r1 = D(r1, s1_1_0, 0x04F6F4FE, 0xFDFB03F8, 0x150A2806, 0xFDE9FE0D);
	r2 = D(r2, s1_1_0, 0x060DEBF2, 0xF511D6EA, 0xEA1907E9, 0xDCCCE608);
	r3 = D(r3, s1_1_0, 0xF9020700, 0xF7F706F3, 0xFAE42C09, 0xF8F90910);
	r4 = D(r4, s1_1_0, 0x10E8C0F8, 0x0706F50F, 0x0CFFF8E6, 0xDED213FE);
	r5 = D(r5, s1_1_0, 0xFBFDE9E1, 0x0106F5F9, 0xF10D04EB, 0xF3DED2F7);
	r6 = D(r6, s1_1_0, 0x0802FBFB, 0xF3010502, 0xFDF303FD, 0x0807E30C);
	r7 = D(r7, s1_1_0, 0xF71608F9, 0x080FEF04, 0x171DEDF6, 0x0600F9FD);
	r0 = D(r0, s1_1_1, 0xEDB819F6, 0x32011CF9, 0xFEF5FDF7, 0xEDE90403);
	r1 = D(r1, s1_1_1, 0xE3230AFB, 0xFD091105, 0x1A1AFA00, 0x04FCF9F8);
	r2 = D(r2, s1_1_1, 0xC5D0D81E, 0xEC14F910, 0x1E05DDFA, 0xECCFE5F9);
	r3 = D(r3, s1_1_1, 0xF5FB0C04, 0x0B080AF8, 0x1711EDEF, 0xFF04060B);
	r4 = D(r4, s1_1_1, 0x1FF9F7FB, 0xF69EED0F, 0x28E90113, 0xFFEAFFFC);
	r5 = D(r5, s1_1_1, 0xF7FB6303, 0xCC030EEB, 0x000C08FC, 0xC8E02830);
	r6 = D(r6, s1_1_1, 0x08040200, 0xCB0FD0E6, 0xE2F7F60C, 0xEEF113FE);
	r7 = D(r7, s1_1_1, 0x08FF0C01, 0x0FD609FB, 0x1202F907, 0x09F700FC);
	r0 = D(r0, s1_1_2, 0x010705F7, 0x27DC0E09, 0xFFFF020C, 0xFCEF10EB);
	r1 = D(r1, s1_1_2, 0xF60CF8FF, 0xE9FE0209, 0x030402E5, 0xFB0405FA);
	r2 = D(r2, s1_1_2, 0xD213EBFE, 0xE9F90BF8, 0x001B0B03, 0xFFF31802);
	r3 = D(r3, s1_1_2, 0x0AF008FC, 0x1C011707, 0x130C0A04, 0xFFEF0EFF);
	r4 = D(r4, s1_1_2, 0xFA1109F5, 0xDE9B13E3, 0xDAF8032C, 0xDD9304F3);
	r5 = D(r5, s1_1_2, 0x0704FE1F, 0xF207FEEC, 0xF51B17FF, 0xF2C3120B);
	r6 = D(r6, s1_1_2, 0xFC060006, 0xFCE7FDF7, 0xEDF8FEEF, 0x10FD001A);
	r7 = D(r7, s1_1_2, 0x0913FFF7, 0xF8F71C1E, 0xEBF7FEF1, 0x02FF0205);
	r0 = D(r0, s1_2_0, 0xE4160602, 0x03EA1AFB, 0x03FE0201, 0x06F10726);
	r1 = D(r1, s1_2_0, 0x06050C03, 0x0EF7F909, 0x050AFD14, 0x02FFF70D);
	r2 = D(r2, s1_2_0, 0xF70F0705, 0xFC070C1B, 0xF225F3E7, 0xEBEA09FB);
	r3 = D(r3, s1_2_0, 0xFF0001FE, 0x0BED0BFD, 0xF8031D08, 0xFCFA0F01);
	r4 = D(r4, s1_2_0, 0x0210E5E4, 0x05F4FBEA, 0xED14C1E3, 0xFFFC1FF3);
	r5 = D(r5, s1_2_0, 0x2308F6ED, 0x080AFBFB, 0xF11C1EEC, 0x2122DBE5);
	r6 = D(r6, s1_2_0, 0x0002FBFE, 0x0104EE16, 0x09FA00FA, 0x01030011);
	r7 = D(r7, s1_2_0, 0x02030603, 0x0B030006, 0x080FFCEB, 0x0300FDFF);
	r0 = D(r0, s1_2_1, 0x0403041D, 0x1405040E, 0xF904FB07, 0xFEF10F0B);
	r1 = D(r1, s1_2_1, 0xF10707E4, 0x07E20A12, 0x170B0A06, 0xFAF0FFFD);
	r2 = D(r2, s1_2_1, 0xBC1902DD, 0xEB18030E, 0x0C1A1904, 0x0BD909F6);
	r3 = D(r3, s1_2_1, 0xFDFFF5FC, 0xFBF7F5E3, 0x06061F04, 0xFBFFFEF3);
	r4 = D(r4, s1_2_1, 0x16FAF909, 0xD116FEEE, 0xF0EFE9D2, 0xF6E8F0F3);
	r5 = D(r5, s1_2_1, 0x291814D1, 0xEEF5FAEC, 0x1DF707E4, 0x10A82EFB);
	r6 = D(r6, s1_2_1, 0x04030706, 0xF206F6F7, 0xE9F9F2FE, 0xFB0A02FF);
	r7 = D(r7, s1_2_1, 0x10FCF8FE, 0xFB070C17, 0x0705F8F7, 0x00FEFF04);
	r0 = D(r0, s1_2_2, 0xFD1DEF03, 0xFE18F40F, 0xFF03FEFF, 0xFDF20605);
	r1 = D(r1, s1_2_2, 0x00F40DFE, 0x01EBFEF5, 0x1AF80901, 0x04F3080F);
	r2 = D(r2, s1_2_2, 0xEEFDF117, 0x05FFFD02, 0x12EB10F1, 0x05E20BF5);
	r3 = D(r3, s1_2_2, 0x03FC0000, 0xF51004F2, 0x010C13FF, 0xF50402F9);
	r4 = D(r4, s1_2_2, 0xFF04FA00, 0x17A01BF7, 0x1618F930, 0xFFAEFB07);
	r5 = D(r5, s1_2_2, 0x0B181005, 0xD3FCE8C7, 0xE81AF00D, 0x04DF26AB);
	r6 = D(r6, s1_2_2, 0x0202FE03, 0xF52AFEF8, 0xFAF6FDFE, 0xEB0EEFFE);
	r7 = D(r7, s1_2_2, 0x0C0FFD11, 0xEC0D05F2, 0x0EF416F2, 0x03FE01FF);
	s0_0_0 = G[4][xy.y+0][xy.x+0]; s0_0_1 = G[4][xy.y+0][xy.x+1];
	s0_0_2 = G[4][xy.y+0][xy.x+2]; s0_1_0 = G[4][xy.y+1][xy.x+0];
	s0_1_1 = G[4][xy.y+1][xy.x+1]; s0_1_2 = G[4][xy.y+1][xy.x+2];
	s0_2_0 = G[4][xy.y+2][xy.x+0]; s0_2_1 = G[4][xy.y+2][xy.x+1];
	s0_2_2 = G[4][xy.y+2][xy.x+2]; s1_0_0 = G[5][xy.y+0][xy.x+0];
	s1_0_1 = G[5][xy.y+0][xy.x+1]; s1_0_2 = G[5][xy.y+0][xy.x+2];
	s1_1_0 = G[5][xy.y+1][xy.x+0]; s1_1_1 = G[5][xy.y+1][xy.x+1];
	s1_1_2 = G[5][xy.y+1][xy.x+2]; s1_2_0 = G[5][xy.y+2][xy.x+0];
	s1_2_1 = G[5][xy.y+2][xy.x+1]; s1_2_2 = G[5][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xE505FA0F, 0xEF0101F8, 0x0100FEFE, 0xFF0004F8);
	r1 = D(r1, s0_0_0, 0x06FCFDFD, 0xF9000304, 0xEA0F1011, 0x0E0A0602);
	r2 = D(r2, s0_0_0, 0x11F30B03, 0x3AFE130B, 0x15FE0A04, 0x15141400);
	r3 = D(r3, s0_0_0, 0x0101FE02, 0xF8F9FD14, 0xFA17EC02, 0xFEFF06FD);
	r4 = D(r4, s0_0_0, 0x07EDFC05, 0xEB0901FF, 0xD9FC1CCE, 0xE60519F1);
	r5 = D(r5, s0_0_0, 0xF0F606F7, 0x0EF3FD01, 0xF209F8CE, 0xFCFDF906);
	r6 = D(r6, s0_0_0, 0xFD03FF01, 0xF0F5F205, 0xF9FF0007, 0xEBEC0108);
	r7 = D(r7, s0_0_0, 0x01050D02, 0xFA1202FE, 0x010401F9, 0x02FE01FF);
	r0 = D(r0, s0_0_1, 0xEC09180F, 0xF000F8FE, 0xFE010301, 0xFAF701EB);
	r1 = D(r1, s0_0_1, 0x180CFDFD, 0xFEFCF912, 0xF1F6EF01, 0xE707FE02);
	r2 = D(r2, s0_0_1, 0xEB080DFF, 0xFEFC0703, 0x0E002403, 0x0EF404F5);
	r3 = D(r3, s0_0_1, 0x03060200, 0x08EAFE01, 0x1EF2FEFD, 0xFDFE02F7);
	r4 = D(r4, s0_0_1, 0x12E60804, 0x11041B00, 0x13A9F92D, 0x26EEEFF4);
	r5 = D(r5, s0_0_1, 0xF3EFB5FF, 0xF707F4FA, 0x0301D6CB, 0xCCF2EC06);
	r6 = D(r6, s0_0_1, 0x0D050003, 0xD9ED0701, 0xFC08030E, 0x0007120F);
	r7 = D(r7, s0_0_1, 0xF3F000FF, 0xF8EC09FF, 0x230606FB, 0xFDFC0002);
	r0 = D(r0, s0_0_2, 0x1A170519, 0xFA0ACEEF, 0xFF0003FF, 0xDF0F07DE);
	r1 = D(r1, s0_0_2, 0x03F803F9, 0xFBE80AFF, 0x0203E6FC, 0x070306E5);
	r2 = D(r2, s0_0_2, 0x19151D02, 0x0B11F8F4, 0x070612FF, 0xF408F4FA);
	r3 = D(r3, s0_0_2, 0xFFFF0403, 0xF6EC0C0A, 0x00FF0AFD, 0xF3050CEF);
	r4 = D(r4, s0_0_2, 0x0410F6F8, 0x12342BF9, 0xE511CE14, 0xD7D4170B);
	r5 = D(r5, s0_0_2, 0xEE0CEF26, 0xF4061902, 0x120AFE0A, 0xFF0CEC1D);
	r6 = D(r6, s0_0_2, 0x0601FF05, 0x1505EFF9, 0x05F6F901, 0xE9F400FA);
	r7 = D(r7, s0_0_2, 0x0016FEFF, 0xFA0A10FE, 0x1604E601, 0xFD0000FF);
	r0 = D(r0, s0_1_0, 0x3C180309, 0xF10E0C0D, 0x0202F9FF, 0xF3F50400);
	r1 = D(r1, s0_1_0, 0x070802FD, 0x060E14FE, 0xF3EAFF0F, 0xF7F704F9);
	r2 = D(r2, s0_1_0, 0x29ED0602, 0x13ED05FA, 0x0306F4FF, 0xED25F4F3);
	r3 = D(r3, s0_1_0, 0xFD05FFFF, 0xFDDD0F01, 0xEA27FEE8, 0x071202F7);
	r4 = D(r4, s0_1_0, 0x11E612FF, 0x07E5FC19, 0x04CE0BF9, 0xE7FB1705);
	r5 = D(r5, s0_1_0, 0x1781EB0F, 0x0AF20106, 0x120AFA01, 0x0B13110B);
	r6 = D(r6, s0_1_0, 0x01F7FE03, 0xF4EEFCF4, 0xFD030006, 0xDF05F105);
	r7 = D(r7, s0_1_0, 0xEB0801F6, 0x11F4F400, 0x11FF0203, 0x00FAFF00);
	r0 = D(r0, s0_1_1, 0x0C0F0517, 0x00F6021D, 0x0C04FF03, 0x96F0F3E3);
	r1 = D(r1, s0_1_1, 0x011510F1, 0xD507100B, 0xDD150CEC, 0xCD0E08EE);
	r2 = D(r2, s0_1_1, 0xEDEBEB15, 0x05E3FDE5, 0x100CD3F4, 0x1300DECF);
	r3 = D(r3, s0_1_1, 0x0901FE03, 0xFCF90422, 0x2A14FCE7, 0xECFD0BF0);
	r4 = D(r4, s0_1_1, 0x13D5D8F7, 0x81120318, 0xEB81D609, 0xFBF81700);
	r5 = D(r5, s0_1_1, 0x65CAB2DA, 0x1B17FBEF, 0xEB1BFAE1, 0x91D91C01);
	r6 = D(r6, s0_1_1, 0x0CFCFD03, 0x1437020A, 0xEA090D07, 0xE4FAF30E);
	r7 = D(r7, s0_1_1, 0xFFE8F812, 0x1300250A, 0xE2F2F1FF, 0xFEFEFF00);
	r0 = D(r0, s0_1_2, 0x0A04F413, 0x0FFFF807, 0x04FDFB03, 0xC10BF8F9);
	r1 = D(r1, s0_1_2, 0x060822E5, 0x0CE96710, 0x002305DF, 0xE8111BEE);
	r2 = D(r2, s0_1_2, 0xF61DF1FD, 0xFE05FE0F, 0x18E6F408, 0xE51104FD);
	r3 = D(r3, s0_1_2, 0xF2FAFE05, 0xE9E0111D, 0xEAF2FAF8, 0xF6011CF5);
	r4 = D(r4, s0_1_2, 0x15FCFBFF, 0xCF2824FE, 0x1BEABE1A, 0xB7E30703);
	r5 = D(r5, s0_1_2, 0x01E1FEFD, 0x11F605DA, 0xFCE3F506, 0x8F1C270A);
	r6 = D(r6, s0_1_2, 0x00FEEE0B, 0x03F3F8F7, 0x00FF02FA, 0xF4F7F6FD);
	r7 = D(r7, s0_1_2, 0xFA0B2508, 0xE50EE0FF, 0xF4240703, 0xFFFEFCFE);
	r0 = D(r0, s0_2_0, 0x0207050A, 0xEBFFF406, 0xFB08FE04, 0xCE0D0100);
	r1 = D(r1, s0_2_0, 0xFC09FFFD, 0xFEFBFA00, 0xF7060602, 0x0A06FE01);
	r2 = D(r2, s0_2_0, 0x05F60D08, 0xF9F4FF01, 0xFA07FDFD, 0xD9090EFB);
	r3 = D(r3, s0_2_0, 0x02030001, 0x07190100, 0x0BFDFBFA, 0x040300FC);
	r4 = D(r4, s0_2_0, 0xF502FB03, 0xF3EAF003, 0x0C20EC12, 0xD7ECFDF6);
	r5 = D(r5, s0_2_0, 0x08020E10, 0x0B030500, 0xFE0406F5, 0x1D000301);
	r6 = D(r6, s0_2_0, 0xFDFE0701, 0xF40AE7F5, 0x020CFC02, 0x0402F2FA);
	r7 = D(r7, s0_2_0, 0x131409F0, 0xED26070A, 0xFEFFFF01, 0xFD020002);
	r0 = D(r0, s0_2_1, 0xFADFF306, 0x000200F5, 0x02FE0207, 0xE5FEF9F9);
	r1 = D(r1, s0_2_1, 0x08F603FC, 0xE5F300F9, 0x0BEFFAF2, 0xE00304E3);
	r2 = D(r2, s0_2_1, 0x0C04EB17, 0xEEFEF2FC, 0xF1F6030D, 0x1208F7EC);
	r3 = D(r3, s0_2_1, 0x0002FE02, 0xF3F8FCF6, 0x09EF04F1, 0xF9FD06FA);
	r4 = D(r4, s0_2_1, 0xE4FBEF13, 0x08E3F919, 0xF7D41029, 0xDBEC1411);
	r5 = D(r5, s0_2_1, 0x29EFF507, 0xF8FA02EB, 0xF512F800, 0xDAEDDCE1);
	r6 = D(r6, s0_2_1, 0x030100FE, 0x00F625FB, 0x0F050907, 0x03F606F5);
	r7 = D(r7, s0_2_1, 0xFFD502F3, 0x04F1F4EB, 0x0EF1F106, 0xFF000002);
	r0 = D(r0, s0_2_2, 0x1A0BF8FC, 0x1AFFEEF3, 0x0605FF03, 0xF7F2F7F5);
	r1 = D(r1, s0_2_2, 0xFA2301F8, 0xF8E814F9, 0xFE0BFA01, 0x0903F9F8);
	r2 = D(r2, s0_2_2, 0x0D10060B, 0x171CFEFE, 0xDD110910, 0x03F21C0F);
	r3 = D(r3, s0_2_2, 0x0002FDF9, 0x0CEF0D09, 0x03FBFCF8, 0x030002FB);
	r4 = D(r4, s0_2_2, 0xFEF50204, 0xD9F0D403, 0x34F0D915, 0x10FFF002);
	r5 = D(r5, s0_2_2, 0xF702140C, 0xFB26FFD8, 0x16DF01F5, 0x812950E1);
	r6 = D(r6, s0_2_2, 0x0201FF04, 0xFD060308, 0x08150A03, 0x16F700FE);
	r7 = D(r7, s0_2_2, 0xF9040905, 0x021016FE, 0xF508F608, 0x0003FF01);
	r0 = D(r0, s1_0_0, 0x1CF5F5FE, 0x10ECF309, 0xFB0400FF, 0xFEF4FB01);
	r1 = D(r1, s1_0_0, 0x020D00FC, 0x05FE07FF, 0xE91201FF, 0x030208F7);
	r2 = D(r2, s1_0_0, 0x150300F1, 0x0704E5AD, 0xF20F01E8, 0x1BFDFB14);
	r3 = D(r3, s1_0_0, 0xFC0101FC, 0xE5180A00, 0xF7EDFEFE, 0xFDFD09F9);
	r4 = D(r4, s1_0_0, 0x020A0FFC, 0xDD101C02, 0x2CEB20FE, 0x2AE700FD);
	r5 = D(r5, s1_0_0, 0x1ED40FF1, 0xFE100404, 0x1FCC041D, 0x22111506);
	r6 = D(r6, s1_0_0, 0x01FCFC05, 0x0011FDFA, 0x000401FB, 0xCC0B05FF);
	r7 = D(r7, s1_0_0, 0xF306FB01, 0x14E9FDFC, 0x0411FB0A, 0xFF0102FF);
	r0 = D(r0, s1_0_1, 0x01F3F6FC, 0x13010304, 0xFF010005, 0x02E70C10);
	r1 = D(r1, s1_0_1, 0x0306F81A, 0xE7EEFC11, 0x0FFDF905, 0x02E10014);
	r2 = D(r2, s1_0_1, 0x08F6E8CD, 0x0FFE07D7, 0x050EFFEF, 0x04EC0AEE);
	r3 = D(r3, s1_0_1, 0xFBFDFD00, 0xFC1D0406, 0x1120F3E0, 0x0303060C);
	r4 = D(r4, s1_0_1, 0xDB04ECF9, 0xFBFB1103, 0x8D39F2D6, 0xCAF209DB);
	r5 = D(r5, s1_0_1, 0x0CFA0DE6, 0x061AFEEE, 0xFEE80E0C, 0xFAEFE8F8);
	r6 = D(r6, s1_0_1, 0x01FEEBFE, 0x11F2060B, 0xFAF50504, 0xE7F8FD02);
	r7 = D(r7, s1_0_1, 0xEC0DF71E, 0x0F0BF408, 0x0CF20308, 0xFD0007FF);
	r0 = D(r0, s1_0_2, 0xE606F209, 0x0CF6FE08, 0xFEFCFEFE, 0x14080903);
	r1 = D(r1, s1_0_2, 0x01090100, 0x10190203, 0xFCF50214, 0x0FF8FF0D);
	r2 = D(r2, s1_0_2, 0x0002F0ED, 0xFDFB0007, 0xF10A0CE7, 0x07F913F4);
	r3 = D(r3, s1_0_2, 0x05040104, 0x05FA0108, 0x09FE0102, 0x00FB0AED);
	r4 = D(r4, s1_0_2, 0xFCF7FD07, 0xDFE331FD, 0xB4F70A13, 0x0A1EF303);
	r5 = D(r5, s1_0_2, 0x0AFFFEBE, 0xFA0AF9FF, 0xF6030BFD, 0x0E17F30D);
	r6 = D(r6, s1_0_2, 0x06FDF706, 0x07E80216, 0xFFF0000B, 0xF5ED0505);
	r7 = D(r7, s1_0_2, 0xFCFF040B, 0x04FCFBFD, 0x0E0A0606, 0xFFFC01FE);
	r0 = D(r0, s1_1_0, 0x06FB0AF8, 0x020F03E4, 0xF903FF02, 0xE21208FD);
	r1 = D(r1, s1_1_0, 0xF8080000, 0x09090202, 0xF10E0AFC, 0x040DF8FD);
	r2 = D(r2, s1_1_0, 0x02030AD9, 0x0D14E5B8, 0x1802FBF3, 0x1DDE19FB);
	r3 = D(r3, s1_1_0, 0xFE03FB04, 0xD6FFF6F8, 0x03D6FD0A, 0x00F80002);
	r4 = D(r4, s1_1_0, 0x050A2712, 0xF232F8E9, 0x14F10EFB, 0xEFF50A02);
	r5 = D(r5, s1_1_0, 0x36F41CFF, 0xEF06FCFC, 0x01ED0B0F, 0xD707F706);
	r6 = D(r6, s1_1_0, 0x03FCFA00, 0x04010EFC, 0xF70EF7FA, 0x0B0CFFFF);
	r7 = D(r7, s1_1_0, 0xFAF90C0A, 0x02F303ED, 0x130BFAF8, 0xFF0306FF);
	r0 = D(r0, s1_1_1, 0x07DCF4F6, 0xF7160AF6, 0x0C0A0DFD, 0x0B14100D);
	r1 = D(r1, s1_1_1, 0xFBECD000, 0x07FCE7FD, 0x000A08F2, 0x02FDFE0E);
	r2 = D(r2, s1_1_1, 0x0403E6B4, 0x122205EA, 0xF90509E5, 0x13E4F712);
	r3 = D(r3, s1_1_1, 0xFBF8F701, 0xE6050CFD, 0x25D72404, 0x09043A10);
	r4 = D(r4, s1_1_1, 0xF32EF6FC, 0x07E7F608, 0xEA1D0620, 0xBFE41810);
	r5 = D(r5, s1_1_1, 0xAD151AF3, 0x02FBE1E9, 0xD9DBE3F9, 0xB40312B7);
	r6 = D(r6, s1_1_1, 0xF5FF00F7, 0xB000E8F1, 0x03FA0B07, 0x01EFF7F2);
	r7 = D(r7, s1_1_1, 0xFE081D2D, 0x09FDFCF6, 0xFB17E9F0, 0x000A22FF);
	r0 = D(r0, s1_1_2, 0xF7E00A09, 0xF8D00308, 0xFCFB020A, 0x000E1EF9);
	r1 = D(r1, s1_1_2, 0xFAE9F311, 0x02E810FF, 0xF8210904, 0xF8E21C02);
	r2 = D(r2, s1_1_2, 0x12FF05D6, 0x1303E6F5, 0xDE0BFFF0, 0x101506D5);
	r3 = D(r3, s1_1_2, 0xF9FAF8FF, 0x0AD0EA15, 0xF20CF20A, 0x03FC0906);
	r4 = D(r4, s1_1_2, 0xED01110D, 0x1FFCF3F8, 0x15CE070E, 0x08E5E1E2);
	r5 = D(r5, s1_1_2, 0x0DCDF70F, 0x07F6E6F7, 0xF3D3EF04, 0x03460244);
	r6 = D(r6, s1_1_2, 0x01F5FC00, 0xF7020904, 0x02FDF308, 0x0FFFE908);
	r7 = D(r7, s1_1_2, 0xFBE8E4EF, 0xE70210E8, 0x05090105, 0x00010301);
	r0 = D(r0, s1_2_0, 0xFE07F91A, 0xFBF9FDFC, 0x0102FAFF, 0xF01805FA);
	r1 = D(r1, s1_2_0, 0x03FAFB0F, 0x0FF6FAFF, 0x1717FEFC, 0x0FFEF901);
	r2 = D(r2, s1_2_0, 0x061503DE, 0x04010EF3, 0x100FF30E, 0x09EA0A0E);
	r3 = D(r3, s1_2_0, 0x0502FDFE, 0x0806FCFD, 0x050611FC, 0xFDF803FC);
	r4 = D(r4, s1_2_0, 0x0FF507F4, 0xF21F0AFD, 0x05F60502, 0xBE1CED05);
	r5 = D(r5, s1_2_0, 0x03F721CE, 0x010D200B, 0xF6F9F603, 0x231C1D35);
	r6 = D(r6, s1_2_0, 0x00070500, 0xEEF8FC11, 0xFCFBFD05, 0x03FE0F10);
	r7 = D(r7, s1_2_0, 0x0B09F90B, 0x1AFC0FFD, 0x100DEFF9, 0xFF03FC00);
	r0 = D(r0, s1_2_1, 0xF6F2170F, 0x0EFA14F9, 0x01FF30FD, 0xFF092E04);
	r1 = D(r1, s1_2_1, 0xFF0CDA19, 0xE6031102, 0x00FCF80B, 0xFBFAF202);
	r2 = D(r2, s1_2_1, 0x00FDC2CB, 0x03FCC0D1, 0x1BFEDBF4, 0x1613E20A);
	r3 = D(r3, s1_2_1, 0x03FDFBFC, 0xF201140B, 0xF60710FC, 0xFCF70C09);
	r4 = D(r4, s1_2_1, 0xF91CF4F2, 0xD603DFE9, 0xFD09DEDD, 0xCB00DEED);
	r5 = D(r5, s1_2_1, 0x04EBB4DB, 0x05060C02, 0xFB0BE402, 0xFED20816);
	r6 = D(r6, s1_2_1, 0x02FEECFE, 0x1CF92113, 0x09F91A0F, 0x09EF1707);
	r7 = D(r7, s1_2_1, 0xF1161C0F, 0x1425FC07, 0x0F052100, 0x030205FF);
	r0 = D(r0, s1_2_2, 0xED03050F, 0x07FE06FA, 0xFEFB07FF, 0xF5F90BFE);
	r1 = D(r1, s1_2_2, 0xFFF5E309, 0x1FFCFAF1, 0xF220FF03, 0x0CFB00FA);
	r2 = D(r2, s1_2_2, 0x0DF5E01A, 0xFE09FE09, 0x18F9E3F6, 0xEFF209FE);
	r3 = D(r3, s1_2_2, 0x06FBEA02, 0x03E204FC, 0xFBFEFAF1, 0x030C0BF8);
	r4 = D(r4, s1_2_2, 0xEE030408, 0xEAF810E8, 0x991527EC, 0x1FFBE606);
	r5 = D(r5, s1_2_2, 0x0FEFE4E5, 0x0D27F219, 0x0AE3030B, 0x0131063D);
	r6 = D(r6, s1_2_2, 0x01FE0604, 0xFEFBEC10, 0xF7F91A01, 0x09FB0CF7);
	r7 = D(r7, s1_2_2, 0x0A13FDFF, 0x03FE0BFE, 0xFFFCFEE8, 0xFE010000);
	s0_0_0 = G[6][xy.y+0][xy.x+0]; s0_0_1 = G[6][xy.y+0][xy.x+1];
	s0_0_2 = G[6][xy.y+0][xy.x+2]; s0_1_0 = G[6][xy.y+1][xy.x+0];
	s0_1_1 = G[6][xy.y+1][xy.x+1]; s0_1_2 = G[6][xy.y+1][xy.x+2];
	s0_2_0 = G[6][xy.y+2][xy.x+0]; s0_2_1 = G[6][xy.y+2][xy.x+1];
	s0_2_2 = G[6][xy.y+2][xy.x+2]; s1_0_0 = G[7][xy.y+0][xy.x+0];
	s1_0_1 = G[7][xy.y+0][xy.x+1]; s1_0_2 = G[7][xy.y+0][xy.x+2];
	s1_1_0 = G[7][xy.y+1][xy.x+0]; s1_1_1 = G[7][xy.y+1][xy.x+1];
	s1_1_2 = G[7][xy.y+1][xy.x+2]; s1_2_0 = G[7][xy.y+2][xy.x+0];
	s1_2_1 = G[7][xy.y+2][xy.x+1]; s1_2_2 = G[7][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x1701F1F2, 0x12F9FE15, 0x09020300, 0x0904F605);
	r1 = D(r1, s0_0_0, 0x080602FC, 0x120EE8FD, 0x160EF908, 0x17FCFCF6);
	r2 = D(r2, s0_0_0, 0x0505FB04, 0x28100C11, 0xEE0F06E9, 0x0FF3F801);
	r3 = D(r3, s0_0_0, 0xFD01FFFC, 0xF40B02FF, 0x090DEC0C, 0xFEF8FEFC);
	r4 = D(r4, s0_0_0, 0x0C0FEC04, 0x0228F6CD, 0xE003E70F, 0xEBF40907);
	r5 = D(r5, s0_0_0, 0xD5EAFE0D, 0x190BF906, 0xFF08E9CE, 0xEE07FADE);
	r6 = D(r6, s0_0_0, 0x0B020600, 0xE80500FD, 0x020703FF, 0x13010418);
	r7 = D(r7, s0_0_0, 0xF2FD0202, 0x0A14FA05, 0xF7FB08F2, 0xFB020402);
	r0 = D(r0, s0_0_1, 0xF70EE317, 0xE700E601, 0x00010403, 0xF803D108);
	r1 = D(r1, s0_0_1, 0x070B11FA, 0xF30E0103, 0xF8FDEE09, 0x1403E4F3);
	r2 = D(r2, s0_0_1, 0xF200FE15, 0x14080D01, 0x02191C07, 0xF60CF005);
	r3 = D(r3, s0_0_1, 0x10FEFBFF, 0x020B0EFF, 0x0E19FE00, 0xF100E1F3);
	r4 = D(r4, s0_0_1, 0x090C0001, 0x26F7C8E4, 0x1910FAFF, 0x2809E20B);
	r5 = D(r5, s0_0_1, 0xF1FCF2FB, 0xFC171116, 0xD21FFEE9, 0x08030605);
	r6 = D(r6, s0_0_1, 0x31012005, 0x23C723FB, 0x1409F007, 0x0AFDFF18);
	r7 = D(r7, s0_0_1, 0xFEFFED0A, 0x100CFC05, 0xEFFAFDFA, 0xF9000503);
	r0 = D(r0, s0_0_2, 0x09010809, 0xF5050907, 0x0404FC04, 0xE714CFDE);
	r1 = D(r1, s0_0_2, 0xFB130B07, 0x0F12E6FB, 0xF406F3EB, 0x1504D402);
	r2 = D(r2, s0_0_2, 0xEC160C06, 0xFD0FE608, 0x1CFEEEF7, 0x0911FEF3);
	r3 = D(r3, s0_0_2, 0x05FFF7FD, 0xFC1A0A12, 0x160DFAFE, 0xE9FEE7F4);
	r4 = D(r4, s0_0_2, 0xFD00E6FE, 0xEC2DBFD0, 0xFC20E2EF, 0xE6F91C21);
	r5 = D(r5, s0_0_2, 0x0D010C04, 0xEE080A14, 0xF5170FFE, 0xFB071112);
	r6 = D(r6, s0_0_2, 0x0E000502, 0x07F4E105, 0x05070002, 0xF402F105);
	r7 = D(r7, s0_0_2, 0xEF0A06F5, 0xEB0BFCFA, 0x01FC0A00, 0x0002FF00);
	r0 = D(r0, s0_1_0, 0xBA0910FB, 0xE7FD0B1D, 0x1C02F2FD, 0x1202F50A);
	r1 = D(r1, s0_1_0, 0x1803F4F6, 0xFB02FE00, 0x01061111, 0x0DFEF6F2);
	r2 = D(r2, s0_1_0, 0x1721DF26, 0xC604F810, 0xEB020FE2, 0xEE04D7EA);
	r3 = D(r3, s0_1_0, 0x0CFDFAFE, 0xFF10FC0B, 0xE70804EB, 0x05F9FDFF);
	r4 = D(r4, s0_1_0, 0xF505E306, 0xF620F3D2, 0xEAE5FAAB, 0x15FE01E0);
	r5 = D(r5, s0_1_0, 0xBEF914E7, 0x01040407, 0xE71908C3, 0x29EBF3E4);
	r6 = D(r6, s0_1_0, 0xFB05F80D, 0x1DD5281A, 0x10090603, 0xF7FEE333);
	r7 = D(r7, s0_1_0, 0xD4FD08EE, 0xF61D04F0, 0xF3041CF5, 0xF6010C00);
	r0 = D(r0, s0_1_1, 0x1C15EE21, 0xDF07FF02, 0xF200FD07, 0x070DBEF9);
	r1 = D(r1, s0_1_1, 0x100D19D9, 0xFA0116F4, 0x09FFC9F5, 0x040309E4);
	r2 = D(r2, s0_1_1, 0xDF2595EB, 0x0BFC0711, 0xDD050FF9, 0x161CC0DF);
	r3 = D(r3, s0_1_1, 0x53FFE007, 0xE917F205, 0x0405D50C, 0xFDF9F6ED);
	r4 = D(r4, s0_1_1, 0x13112720, 0x04F91EE7, 0x020913EA, 0x310CEE41);
	r5 = D(r5, s0_1_1, 0x410D140E, 0xD309FF11, 0xD52926FC, 0x1001C424);
	r6 = D(r6, s0_1_1, 0xE405ED19, 0xB931B62C, 0xD006F002, 0xCCFDEE23);
	r7 = D(r7, s0_1_1, 0x08FC2B03, 0x27F50203, 0xE90308DF, 0x44043805);
	r0 = D(r0, s0_1_2, 0x100A0A0D, 0xEFFD011A, 0x03070806, 0x0008DDEA);
	r1 = D(r1, s0_1_2, 0xFE10C5F6, 0xF008F5EA, 0x0205DCED, 0x0102FA00);
	r2 = D(r2, s0_1_2, 0x04F41706, 0xFDF72AFA, 0xE4120C09, 0x080B11FE);
	r3 = D(r3, s0_1_2, 0xFB01F905, 0xEF030209, 0xF5120001, 0xFC000AF7);
	r4 = D(r4, s0_1_2, 0xF907EFEF, 0x070A0602, 0x0C17FCEC, 0xEA17DFE3);
	r5 = D(r5, s0_1_2, 0x12061E31, 0x0508F3F4, 0xFB12F305, 0xEB21BD06);
	r6 = D(r6, s0_1_2, 0x000114F7, 0x05E32FF7, 0x09041A05, 0x0301FD0A);
	r7 = D(r7, s0_1_2, 0xE902F001, 0xE60B0EF2, 0x14030EF5, 0x0102FE03);
	r0 = D(r0, s0_2_0, 0xF50F07FD, 0x0DFC051B, 0x0B07FBFD, 0x3806DD06);
	r1 = D(r1, s0_2_0, 0x080BF4EC, 0xF91802F9, 0xEF04FB0D, 0x0907F9F5);
	r2 = D(r2, s0_2_0, 0xE80A12FD, 0xFCF019FE, 0xFA0005E8, 0xF8FE24EB);
	r3 = D(r3, s0_2_0, 0x010003FF, 0x0BF602F0, 0x00FB09F0, 0x06FFFAFB);
	r4 = D(r4, s0_2_0, 0xE30311F9, 0x090A0BE1, 0xECEE26E6, 0x270FEFF8);
	r5 = D(r5, s0_2_0, 0xD7F91EF9, 0x0308F6EC, 0xEA15FFF5, 0x02081D02);
	r6 = D(r6, s0_2_0, 0xFDFB0606, 0xFD01D504, 0xFE0103FE, 0x05F7F607);
	r7 = D(r7, s0_2_0, 0xE2010DF8, 0xF710F200, 0xF301020C, 0xFF010001);
	r0 = D(r0, s0_2_1, 0x0210FD0C, 0x0B06DA13, 0x0B07F3FF, 0x1C0DE606);
	r1 = D(r1, s0_2_1, 0x000F08DA, 0x1119E8E3, 0xDF0102FC, 0xFF050E01);
	r2 = D(r2, s0_2_1, 0xEC18E011, 0xF6F9F7F7, 0xCFFDF907, 0x100403F8);
	r3 = D(r3, s0_2_1, 0x0DFCFF02, 0x0805FDFD, 0xFFFAF802, 0x0A0001F4);
	r4 = D(r4, s0_2_1, 0x0F09EA0A, 0x0D1B12E3, 0xF6111607, 0xFC0CEE1D);
	r5 = D(r5, s0_2_1, 0xD9F9F91B, 0xF01028C4, 0x0D0F1CEF, 0xF820CC2B);
	r6 = D(r6, s0_2_1, 0xFBFFF80C, 0x27D31C13, 0x18FFFDFF, 0x19F704F9);
	r7 = D(r7, s0_2_1, 0x15F416FB, 0x0B08FCFE, 0xFB0DF202, 0xFD020A01);
	r0 = D(r0, s0_2_2, 0x050A0601, 0xF7FBE018, 0x0604FD03, 0xFA07E908);
	r1 = D(r1, s0_2_2, 0xEF0903D1, 0x1B15D503, 0x00FDED06, 0x0601FD0A);
	r2 = D(r2, s0_2_2, 0xFB07FC13, 0xF607FF04, 0x04FD0609, 0x070FFA0B);
	r3 = D(r3, s0_2_2, 0xFBFE050B, 0xFC0AF1FF, 0xFD08EA06, 0x0003FCFD);
	r4 = D(r4, s0_2_2, 0xFD0B06FD, 0x10101AF3, 0x1323DB13, 0x12F71FF7);
	r5 = D(r5, s0_2_2, 0xFBF3F426, 0x080520E4, 0x200FF403, 0x0D08F9BD);
	r6 = D(r6, s0_2_2, 0x00FFFDFE, 0xFCFEEFF4, 0x07FFF7F7, 0x0AF506FA);
	r7 = D(r7, s0_2_2, 0xEA00E30D, 0xFB08050E, 0xF20502FC, 0xFD020600);
	r0 = D(r0, s1_0_0, 0x21EFFA17, 0x1500FCF4, 0xFCFFFC00, 0x070006EE);
	r1 = D(r1, s1_0_0, 0x000804FA, 0x0102FAF4, 0xF4F8DCF8, 0xF300FCEE);
	r2 = D(r2, s1_0_0, 0xFE000AFC, 0xE2FDF0F9, 0x01E6FEF1, 0x220CFBFC);
	r3 = D(r3, s1_0_0, 0xFEFDFC07, 0xFD090305, 0x06F4F60D, 0xFEF900F6);
	r4 = D(r4, s1_0_0, 0xF2F5FC08, 0xF112DE03, 0xF0E28123, 0xF8F0061D);
	r5 = D(r5, s1_0_0, 0x120FBAD7, 0xF9F3F507, 0xDC06FBF9, 0x071BECF2);
	r6 = D(r6, s1_0_0, 0x010601FE, 0x010A0402, 0x000A030B, 0x020E090A);
	r7 = D(r7, s1_0_0, 0x08FF1008, 0x0AFA05F9, 0x0E0FEDFB, 0xFE03FFFD);
	r0 = D(r0, s1_0_1, 0xF4D3FDE8, 0xEFF4FF0D, 0x01090106, 0x05E105F0);
	r1 = D(r1, s1_0_1, 0x07060C01, 0xFEDF070A, 0x0704FD07, 0x29D70114);
	r2 = D(r2, s1_0_1, 0xFF0609F9, 0xEBDFF500, 0x1C13FEF1, 0xDC1200FF);
	r3 = D(r3, s1_0_1, 0x00FA0004, 0xEE06F005, 0x06F4F7FC, 0xF20D04FB);
	r4 = D(r4, s1_0_1, 0x1512FCFC, 0xEE08E9CA, 0x042AD70A, 0x15ECF5F5);
	r5 = D(r5, s1_0_1, 0x0005FF13, 0xEF1B02FB, 0xCE03EF0F, 0x28FAFAF1);
	r6 = D(r6, s1_0_1, 0x09F1FBFF, 0xF7F7FFFF, 0x03F602FC, 0xF6E9EEED);
	r7 = D(r7, s1_0_1, 0xF7FC0A07, 0x0511FAF3, 0xF3000503, 0xF907FE02);
	r0 = D(r0, s1_0_2, 0x00F80F03, 0xE80FF401, 0xFFFDFEFE, 0xFBF0FF00);
	r1 = D(r1, s1_0_2, 0xFD040B08, 0xFFE101FB, 0x0F0001F0, 0x0CDB06F2);
	r2 = D(r2, s1_0_2, 0xFDF00712, 0x0A000C05, 0xEFF00109, 0xFA0E0704);
	r3 = D(r3, s1_0_2, 0xF900FB01, 0x052114F8, 0x07F701F7, 0xF70F0810);
	r4 = D(r4, s1_0_2, 0x06FD1100, 0xCFDFDE0E, 0xF836EA1C, 0xEE280F11);
	r5 = D(r5, s1_0_2, 0xF604E9FB, 0xF6040105, 0xF017F907, 0xF5F60910);
	r6 = D(r6, s1_0_2, 0x04FBFFFC, 0x0AFAF5F2, 0xF6FA01FE, 0xF30309F3);
	r7 = D(r7, s1_0_2, 0xECFD110A, 0x1108FC00, 0xFCF60307, 0xFD00FFFE);
	r0 = D(r0, s1_1_0, 0xDCE2810A, 0xEC0BF1FB, 0x0304FE0C, 0xFCEDFDF1);
	r1 = D(r1, s1_1_0, 0x080602F9, 0x090004E5, 0x0E1EF1F6, 0x0D030502);
	r2 = D(r2, s1_1_0, 0xF7F3F40F, 0xE6E4810C, 0xDEE6E0F9, 0xCFE6D8C4);
	r3 = D(r3, s1_1_0, 0x0606FE03, 0x032305FF, 0x140EF6FD, 0xFB050707);
	r4 = D(r4, s1_1_0, 0xDECCE804, 0x20FBFA07, 0xEE1CC30E, 0x020001D7);
	r5 = D(r5, s1_1_0, 0xF9FD8104, 0xD800F70E, 0xB614E11C, 0x15E30109);
	r6 = D(r6, s1_1_0, 0xF7F6FA07, 0xEBFFFCF5, 0x02FC07FF, 0xE6DE0102);
	r7 = D(r7, s1_1_0, 0xF50511F2, 0xE6E0012D, 0xEDF6F9F9, 0xFEFC0002);
	r0 = D(r0, s1_1_1, 0x1CF6E9FC, 0x17F2EBFF, 0x0FFFFBE0, 0x0CF2051C);
	r1 = D(r1, s1_1_1, 0xCEF61208, 0x2218F702, 0x05FB1B1E, 0xFAEF0305);
	r2 = D(r2, s1_1_1, 0x94F481FC, 0xECF3F0E8, 0x11F1F4D7, 0xCAFD02BB);
	r3 = D(r3, s1_1_1, 0x0508FF05, 0xF631D2B8, 0xFEF9F3D7, 0x11260220);
	r4 = D(r4, s1_1_1, 0xEE04F3D3, 0xF8A503F2, 0xD1B1F8D4, 0xF303ECC0);
	r5 = D(r5, s1_1_1, 0xE2CB2F16, 0xA9FCE2FD, 0x81F9EBE7, 0xDE0DEED9);
	r6 = D(r6, s1_1_1, 0xFBE5F3E9, 0xD80005EC, 0xEE0AF71D, 0xE8FDB907);
	r7 = D(r7, s1_1_1, 0x120AFA19, 0xF407060C, 0xCA17FA11, 0x050300F3);
	r0 = D(r0, s1_1_2, 0xF504F4F3, 0x0EFBFD06, 0xFBFAFD01, 0xF6000200);
	r1 = D(r1, s1_1_2, 0xDE000610, 0x061CFE03, 0x01F60305, 0x020303FA);
	r2 = D(r2, s1_1_2, 0xFE080607, 0xFD05020C, 0xE4EA05E2, 0xF90DF500);
	r3 = D(r3, s1_1_2, 0xFC06FAFA, 0x00EDF512, 0x0BF7FEFE, 0xF4FF0A01);
	r4 = D(r4, s1_1_2, 0xF4FF0211, 0xC7FCF10A, 0x130906D8, 0x1F15DE0A);
	r5 = D(r5, s1_1_2, 0x1CF00EE7, 0xF5FDFD0D, 0xFB0AFAF7, 0x91EBE134);
	r6 = D(r6, s1_1_2, 0x010101F7, 0xFDFFE902, 0x01000AF2, 0x0610F804);
	r7 = D(r7, s1_1_2, 0x0EFC0217, 0xD8110214, 0xF1FEF403, 0x00FE0101);
	r0 = D(r0, s1_2_0, 0xF201FD19, 0x0101021B, 0x01FDFA0C, 0x2210020D);
	r1 = D(r1, s1_2_0, 0xE80304FE, 0xFC00F904, 0xFCEDEF06, 0x06F403F6);
	r2 = D(r2, s1_2_0, 0x0F000A09, 0x06000ADE, 0x031C13EB, 0xD603E5E7);
	r3 = D(r3, s1_2_0, 0xFFFDFC08, 0xF6F3FDFF, 0xF103F5E9, 0xF8FBFFF3);
	r4 = D(r4, s1_2_0, 0x07F8F608, 0xFF1D0814, 0xD501FD15, 0x250F0AF9);
	r5 = D(r5, s1_2_0, 0xED14CC81, 0xCC04F213, 0xD802E804, 0xCFF8E415);
	r6 = D(r6, s1_2_0, 0x01FD0101, 0x00F506E8, 0xF907FEFD, 0x01010D04);
	r7 = D(r7, s1_2_0, 0xF4FA1416, 0xFF00F507, 0x0EF7F919, 0x0102FE09);
	r0 = D(r0, s1_2_1, 0x15120D10, 0x19010F01, 0xF6F6F808, 0x0DF9FB0A);
	r1 = D(r1, s1_2_1, 0xD904FDF3, 0xEA0303E2, 0xFD0503F7, 0x0003FA04);
	r2 = D(r2, s1_2_1, 0x11F21912, 0x2FFBFB07, 0x04EEE2FF, 0x1E00FDFC);
	r3 = D(r3, s1_2_1, 0xFAFC0013, 0xE20D050D, 0x07030001, 0xE8060000);
	r4 = D(r4, s1_2_1, 0x06F9F2EF, 0xEAF2F719, 0xC4D4BDFD, 0x26DCEBFE);
	r5 = D(r5, s1_2_1, 0x2315DBBE, 0x810B0010, 0xD812FBFB, 0x81FFF481);
	r6 = D(r6, s1_2_1, 0x11030103, 0x070D06E6, 0xE510010F, 0x08010E0D);
	r7 = D(r7, s1_2_1, 0xED0C09FA, 0x0DEEFB16, 0xECFCEC24, 0x0000FC04);
	r0 = D(r0, s1_2_2, 0xF21A03FF, 0xF10201FF, 0xFDFFFDFF, 0x08FEF604);
	r1 = D(r1, s1_2_2, 0xD8FD0801, 0xFEF1F6E2, 0x0F01FFFD, 0x0FF6FC00);
	r2 = D(r2, s1_2_2, 0x03EF0112, 0xF0F40000, 0x14FDEE0E, 0x0007FCFB);
	r3 = D(r3, s1_2_2, 0x07050109, 0x07FA1600, 0x0C06FB0A, 0xFE000300);
	r4 = D(r4, s1_2_2, 0xE70A06FC, 0x010C0A03, 0xCDE7E0EC, 0x0E0BFD07);
	r5 = D(r5, s1_2_2, 0x30F2FC0A, 0x81170AFB, 0xA0F7F3F3, 0x81E6CA02);
	r6 = D(r6, s1_2_2, 0x00030001, 0xF3F90301, 0xF30906F7, 0xF50C0BF8);
	r7 = D(r7, s1_2_2, 0x08FA1107, 0xF5FAF50F, 0x13F8F301, 0x0001FEFF);
	f0 = vec4(r0) * 6.2000124e-05;
	f0 += vec4(-1.927e-02, -3.127e-02, 5.626e-03, 2.811e-02);
	f0 = clamp(f0, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 0), f0);
	f1 = vec4(r1) * 6.2000124e-05;
	f1 += vec4(1.923e-02, 1.508e-03, 1.841e-02, 3.213e-02);
	f1 = clamp(f1, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 0), f1);
	f2 = vec4(r2) * 6.2000124e-05;
	f2 += vec4(2.455e-02, 1.150e-02, -1.093e-03, 7.684e-03);
	f2 = clamp(f2, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 1), f2);
	f3 = vec4(r3) * 6.2000124e-05;
	f3 += vec4(8.961e-03, -2.619e-03, 4.682e-03, -1.253e-02);
	f3 = clamp(f3, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 1), f3);
	f4 = vec4(r4) * 6.2000124e-05;
	f4 += vec4(2.248e-02, 2.192e-02, -2.001e-02, 3.187e-02);
	f4 = clamp(f4, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 0), f4);
	f5 = vec4(r5) * 6.2000124e-05;
	f5 += vec4(-2.446e-02, 5.587e-02, 3.164e-02, 7.005e-03);
	f5 = clamp(f5, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 0), f5);
	f6 = vec4(r6) * 6.2000124e-05;
	f6 += vec4(-4.514e-03, 7.226e-03, 2.045e-02, 5.470e-03);
	f6 = clamp(f6, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 1), f6);
	f7 = vec4(r7) * 6.2000124e-05;
	f7 += vec4(2.460e-02, -2.041e-02, -8.084e-03, 9.348e-03);
	f7 = clamp(f7, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 1), f7);
}

//!DESC [CuNNy_8x32_DS_vk] -conv5
//!HOOK LUMA
//!COMPUTE 32 16 8 8
//!BIND conv4
//!BIND LUMA
//!SAVE conv5
//!WIDTH LUMA.w 4 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_spirv_intrinsics : require
spirv_instruction (extensions = ["SPV_KHR_integer_dot_product"], capabilities = [6019, 6018], id = 4450)
int dp4(int a, int b, spirv_literal int fmt);
#define D(r, s, a, b, c, d) r + ivec4(dp4(s, a, 0), dp4(s, b, 0), dp4(s, c, 0), dp4(s, d, 0))
shared int G[8][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(4, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			vec2 p;
			vec4 r, g, b, a;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(1, 1)) * conv4_pt;
			r = conv4_gather(p, 0);
			g = conv4_gather(p, 1);
			b = conv4_gather(p, 2);
			a = conv4_gather(p, 3);
			vec4 v0 = vec4(r.w, g.w, b.w, a.w) * 1.0000000e+00;
			vec4 v1 = vec4(r.z, g.z, b.z, a.z) * 1.0000000e+00;
			vec4 v2 = vec4(r.x, g.x, b.x, a.x) * 1.0000000e+00;
			vec4 v3 = vec4(r.y, g.y, b.y, a.y) * 1.0000000e+00;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(3, 1)) * conv4_pt;
			r = conv4_gather(p, 0);
			g = conv4_gather(p, 1);
			b = conv4_gather(p, 2);
			a = conv4_gather(p, 3);
			vec4 v4 = vec4(r.w, g.w, b.w, a.w) * 1.0000000e+00;
			vec4 v5 = vec4(r.z, g.z, b.z, a.z) * 1.0000000e+00;
			vec4 v6 = vec4(r.x, g.x, b.x, a.x) * 1.0000000e+00;
			vec4 v7 = vec4(r.y, g.y, b.y, a.y) * 1.0000000e+00;
			G[0][ay][ax] = int(packSnorm4x8(v0));
			G[1][ay][ax] = int(packSnorm4x8(v1));
			G[2][ay][ax] = int(packSnorm4x8(v2));
			G[3][ay][ax] = int(packSnorm4x8(v3));
			G[4][ay][ax] = int(packSnorm4x8(v4));
			G[5][ay][ax] = int(packSnorm4x8(v5));
			G[6][ay][ax] = int(packSnorm4x8(v6));
			G[7][ay][ax] = int(packSnorm4x8(v7));
		}
	}
	barrier();
	int s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;
	ivec4 r0, r1, r2, r3, r4, r5, r6, r7;
	vec4 f0, f1, f2, f3, f4, f5, f6, f7;
	r0 = ivec4(0); r1 = ivec4(0); r2 = ivec4(0); r3 = ivec4(0); r4 = ivec4(0); r5 = ivec4(0); r6 = ivec4(0); r7 = ivec4(0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2]; s1_0_0 = G[1][xy.y+0][xy.x+0];
	s1_0_1 = G[1][xy.y+0][xy.x+1]; s1_0_2 = G[1][xy.y+0][xy.x+2];
	s1_1_0 = G[1][xy.y+1][xy.x+0]; s1_1_1 = G[1][xy.y+1][xy.x+1];
	s1_1_2 = G[1][xy.y+1][xy.x+2]; s1_2_0 = G[1][xy.y+2][xy.x+0];
	s1_2_1 = G[1][xy.y+2][xy.x+1]; s1_2_2 = G[1][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xF9F500F4, 0xFA08EEF2, 0xFDF70DF5, 0xF613E1D8);
	r1 = D(r1, s0_0_0, 0x0000EC04, 0xFE0E0AE8, 0xFBFE011A, 0x061101F4);
	r2 = D(r2, s0_0_0, 0x0208F9F1, 0x0804F5F8, 0xF807F404, 0xFA2ADAF4);
	r3 = D(r3, s0_0_0, 0xFD03E505, 0xFFFAFF01, 0x0CFF06FD, 0x06FC0408);
	r4 = D(r4, s0_0_0, 0xF815E3F8, 0x00040BF6, 0xF8EF09F6, 0xFAFAFFFD);
	r5 = D(r5, s0_0_0, 0x01FEFEFE, 0x020BF8F9, 0x010BFEFF, 0xF60FEFF5);
	r6 = D(r6, s0_0_0, 0x0D0502F0, 0xFBFEFFEE, 0x04E908FA, 0x050EFEF5);
	r7 = D(r7, s0_0_0, 0x0B18F2B4, 0x0527FCF5, 0xE4FC0DFD, 0x0B06DDE5);
	r0 = D(r0, s0_0_1, 0x03EA29F6, 0x16FDF6E6, 0x1DCF23FF, 0xEF0AF7F5);
	r1 = D(r1, s0_0_1, 0xF0E0FD0E, 0xF91EFCEF, 0x021E0511, 0x1029F5FA);
	r2 = D(r2, s0_0_1, 0x2007F1FE, 0x053509F7, 0x4707DC1C, 0xCBCF161E);
	r3 = D(r3, s0_0_1, 0x090B06EE, 0xFE040003, 0x020EF5F0, 0xF403FF05);
	r4 = D(r4, s0_0_1, 0xF70BF0FD, 0xF3EE0CF5, 0x06DEFBF1, 0xF6F8050D);
	r5 = D(r5, s0_0_1, 0x01FFFE05, 0xF5EFF418, 0xFE2DFEF4, 0x131D00F6);
	r6 = D(r6, s0_0_1, 0x1CFB01F1, 0xFD1804FC, 0xF10E0506, 0x001212FC);
	r7 = D(r7, s0_0_1, 0xE4BDEE81, 0xF6140211, 0x06E602E2, 0x0700FDBB);
	r0 = D(r0, s0_0_2, 0xEFF103D5, 0x23F8CB0D, 0xCEF331F7, 0xEFF4FCF3);
	r1 = D(r1, s0_0_2, 0xF3E3EF06, 0x1D00FA07, 0xF80A07FA, 0x0104EB0B);
	r2 = D(r2, s0_0_2, 0xC5FF05FE, 0xEC0A07F9, 0xE7061117, 0x8DDC71A8);
	r3 = D(r3, s0_0_2, 0xFFFFFD02, 0xFE01FFFD, 0x1DEBED12, 0xEA0602FE);
	r4 = D(r4, s0_0_2, 0xFF0AC5FC, 0x070006F3, 0x40E3E10E, 0xF7FBF602);
	r5 = D(r5, s0_0_2, 0x0300FFFC, 0x000B0C10, 0x010AF9FE, 0xF30209F9);
	r6 = D(r6, s0_0_2, 0xFA0514EC, 0x2001F1FF, 0xF2050E07, 0x1D01F2FB);
	r7 = D(r7, s0_0_2, 0x20E9CEF5, 0x0BFC01F9, 0x0EFD0118, 0x1903C4E6);
	r0 = D(r0, s0_1_0, 0x0AE50B05, 0x0002DB04, 0x0FF80BF9, 0xFCF6F8FE);
	r1 = D(r1, s0_1_0, 0x02F6D70D, 0xE91CF7F0, 0x00F6FF06, 0x0AFEFF14);
	r2 = D(r2, s0_1_0, 0xDB00D9F5, 0x1C0F0A04, 0xE1EAE5D3, 0x0700DFFC);
	r3 = D(r3, s0_1_0, 0x02EA3EF2, 0x03E80303, 0x18F7FC14, 0x10EA100B);
	r4 = D(r4, s0_1_0, 0xEFF1F80B, 0xF30AF5FB, 0x05070AFB, 0x06FCFF07);
	r5 = D(r5, s0_1_0, 0x020300FF, 0xFCE90B0A, 0x0308FAFE, 0xF3091002);
	r6 = D(r6, s0_1_0, 0xF503DA05, 0x0307E204, 0x3307FE00, 0x0F0D04EF);
	r7 = D(r7, s0_1_0, 0x02FB1CEF, 0x28E24507, 0x04E9FBF7, 0x02F3F2ED);
	r0 = D(r0, s0_1_1, 0xF930F70D, 0xF9DDD8FB, 0x03ECD5E4, 0x10F9080A);
	r1 = D(r1, s0_1_1, 0xF1D903F8, 0x00D812EE, 0xFCA90CF7, 0x0BE1F300);
	r2 = D(r2, s0_1_1, 0xF428F507, 0x0C0DF8F4, 0xF1150002, 0xF7F7C1EB);
	r3 = D(r3, s0_1_1, 0x0A0A000F, 0x013803FA, 0xF922F605, 0xFD1CE404);
	r4 = D(r4, s0_1_1, 0x0118F219, 0xFBDAF9EE, 0x1D17FBEF, 0xF6F4E8FA);
	r5 = D(r5, s0_1_1, 0x000002FE, 0xF31C181D, 0x00F4FFF6, 0x0512050A);
	r6 = D(r6, s0_1_1, 0xD7F717FE, 0x08E1E5E1, 0x02D3E1D9, 0xE9AEEBF7);
	r7 = D(r7, s0_1_1, 0xF605DCB1, 0x00F5EF9A, 0x05120921, 0xF3070BD6);
	r0 = D(r0, s0_1_2, 0x04EC08F8, 0xF7F6FD1D, 0x030409E7, 0xF5FBF8C9);
	r1 = D(r1, s0_1_2, 0x060DDC06, 0x1D03E9FB, 0xFCF6F1D2, 0xF9FCF003);
	r2 = D(r2, s0_1_2, 0xFFE2DDF1, 0x01FB09EC, 0xE91208FE, 0x1DECCCEA);
	r3 = D(r3, s0_1_2, 0x03FAEF12, 0xFB09FFFB, 0xE11F0FE1, 0x05FC0D02);
	r4 = D(r4, s0_1_2, 0xF009E9DF, 0x0B050107, 0x030015FC, 0x02FEFA06);
	r5 = D(r5, s0_1_2, 0xFEEEF9FB, 0xFF091A05, 0x040502FF, 0xF3FB0402);
	r6 = D(r6, s0_1_2, 0xE6120AE7, 0x0D072507, 0x1C000D16, 0x0E080208);
	r7 = D(r7, s0_1_2, 0x22D20217, 0x1DEB1707, 0x19E10213, 0x03FC0506);
	r0 = D(r0, s0_2_0, 0x070203F3, 0x0FFCDB21, 0xF5FE05DC, 0x1F16DD02);
	r1 = D(r1, s0_2_0, 0xFF04EEF5, 0x10210A09, 0xFDFEE903, 0x0503CCFF);
	r2 = D(r2, s0_2_0, 0x2501FF02, 0x1505E30B, 0xE2FE130C, 0xC7FA74AB);
	r3 = D(r3, s0_2_0, 0x15F9090B, 0xFDFE00FA, 0xE800E204, 0x0EF4F815);
	r4 = D(r4, s0_2_0, 0x080FE8FB, 0xF806FAF0, 0x0F0AFB07, 0xFEFBFA09);
	r5 = D(r5, s0_2_0, 0x0304FE01, 0xECF60CF8, 0xFE0203F9, 0x06FC02FD);
	r6 = D(r6, s0_2_0, 0xED0119E3, 0xEE1616E1, 0xE91913F6, 0xE81729DD);
	r7 = D(r7, s0_2_0, 0xF0EC0802, 0xF10EDC20, 0x11FC0408, 0xFB04FAF5);
	r0 = D(r0, s0_2_1, 0x0DF6EF07, 0x0507FC05, 0x11090305, 0x0F01F3E5);
	r1 = D(r1, s0_2_1, 0xEBEE12F0, 0xF6FEFE09, 0xF00110C6, 0xF6EF11ED);
	r2 = D(r2, s0_2_1, 0x1D05DB16, 0xF4F60803, 0x290CF61F, 0xF5F9810F);
	r3 = D(r3, s0_2_1, 0xEE0800FC, 0x02FFFD01, 0xF5E8EEF8, 0xF50405E8);
	r4 = D(r4, s0_2_1, 0xFC12C100, 0x020901E6, 0xF007F601, 0x0403FA09);
	r5 = D(r5, s0_2_1, 0x0804FC00, 0xFA050D0F, 0x03FC0001, 0xF8FD0504);
	r6 = D(r6, s0_2_1, 0x10F607F8, 0xF8EA1403, 0xFDE50C0D, 0xFDEF0B0E);
	r7 = D(r7, s0_2_1, 0xE713150C, 0xEDFF15C5, 0xE9F5FDFB, 0x0FF9FD02);
	r0 = D(r0, s0_2_2, 0xF3F5FB00, 0xFCFA0CFB, 0xEEFC02F6, 0xFEF4B7F2);
	r1 = D(r1, s0_2_2, 0x09FEEC0F, 0x08030B05, 0xFB03F90D, 0x0CFBFB02);
	r2 = D(r2, s0_2_2, 0xFBF70206, 0xFE0710FC, 0xFE080601, 0x1EF20CFD);
	r3 = D(r3, s0_2_2, 0xFBF7061B, 0xFF04FF01, 0x08FFF9EF, 0xF80503FF);
	r4 = D(r4, s0_2_2, 0x03F8F8F7, 0x06F90604, 0x05F41AFA, 0x01050005);
	r5 = D(r5, s0_2_2, 0xFFFAFD00, 0x020A000A, 0xFF0401FF, 0xFE050403);
	r6 = D(r6, s0_2_2, 0x0C11EDFA, 0x0B0EF905, 0x0D07FD1E, 0x070DFCFB);
	r7 = D(r7, s0_2_2, 0x060C0F23, 0x05FE0800, 0xFDFF09F1, 0xFE02FD00);
	r0 = D(r0, s1_0_0, 0x09F9FD25, 0x0AE9FC02, 0xFBF7FA04, 0x0CF909EB);
	r1 = D(r1, s1_0_0, 0xF40F08F8, 0x08F410EE, 0xFEFAED08, 0x030408E7);
	r2 = D(r2, s1_0_0, 0xFA1204F3, 0xFBFA0ED5, 0x0BF318CF, 0x3F01DCB1);
	r3 = D(r3, s1_0_0, 0x01FFFC08, 0x00010200, 0xEC0E0806, 0x00FDFD14);
	r4 = D(r4, s1_0_0, 0x070A0CFB, 0xFE0AFB0E, 0x05FFFAED, 0xFCFB0111);
	r5 = D(r5, s1_0_0, 0xFCFF03FC, 0xFCFBFE05, 0x01FFFE03, 0x0205FDE1);
	r6 = D(r6, s1_0_0, 0x050309F7, 0x040B090D, 0x0506020B, 0x00071106);
	r7 = D(r7, s1_0_0, 0x00F81512, 0x09F7FC0C, 0xFF090609, 0x06F1F400);
	r0 = D(r0, s1_0_1, 0x20010405, 0x18F7FB06, 0xF80CFA1C, 0xF50AFC1C);
	r1 = D(r1, s1_0_1, 0xF8F8FE0B, 0x06ED12FA, 0xF5FF0C11, 0xE5F805F5);
	r2 = D(r2, s1_0_1, 0xF20BFFDA, 0xE406F7F6, 0xDA0C10FB, 0xC40F0129);
	r3 = D(r3, s1_0_1, 0xFC000C0B, 0x050403FE, 0x02F5FAFD, 0x000A0CFE);
	r4 = D(r4, s1_0_1, 0xFCFE07F6, 0x0006F501, 0xFAF112E4, 0x09FDFA09);
	r5 = D(r5, s1_0_1, 0xFD010404, 0xF4FCFC03, 0x01FC03F7, 0xEA0402FF);
	r6 = D(r6, s1_0_1, 0xEF10070C, 0xFFFF11FD, 0xFBF50C07, 0x0709FF05);
	r7 = D(r7, s1_0_1, 0x05F2FC24, 0x0AE918FF, 0x04F80A03, 0x080714FA);
	r0 = D(r0, s1_0_2, 0x0C00F406, 0x03FDFA02, 0x12FC0DF0, 0x07020904);
	r1 = D(r1, s1_0_2, 0xFAEFFD08, 0x0002F608, 0xFF090702, 0xF2FDFA04);
	r2 = D(r2, s1_0_2, 0x01ED06F9, 0xEEFC03F6, 0xFBECF910, 0xDEE41610);
	r3 = D(r3, s1_0_2, 0x0B05FA0B, 0x02030004, 0x18FE08F0, 0x02010005);
	r4 = D(r4, s1_0_2, 0xD4190C16, 0xF909FDFC, 0x0AFCFEF1, 0x08F50300);
	r5 = D(r5, s1_0_2, 0xFDFD03FF, 0xF6F5F60A, 0xFEFEFF04, 0x0109FC03);
	r6 = D(r6, s1_0_2, 0xF411050B, 0xFCF0060A, 0xFFF40609, 0x01F80205);
	r7 = D(r7, s1_0_2, 0xEAFC090A, 0x05FAF607, 0x0FF4F202, 0x0C030007);
	r0 = D(r0, s1_1_0, 0xF306F90A, 0xF402FE01, 0x0B06FF01, 0xEDF80A10);
	r1 = D(r1, s1_1_0, 0xF2FD06F4, 0xF80A2106, 0xFAFD08FF, 0xF4F60307);
	r2 = D(r2, s1_1_0, 0x1708F4D7, 0xE301F7F9, 0x0DD81DEA, 0x0083C106);
	r3 = D(r3, s1_1_0, 0xFFEEE819, 0xFE01020C, 0xF3210816, 0xF6031000);
	r4 = D(r4, s1_1_0, 0xF8121A02, 0x0606FFF7, 0xFB01060E, 0x04F2FAF9);
	r5 = D(r5, s1_1_0, 0xFD0000FF, 0xFBF0FCFB, 0x00020604, 0x1102F9FD);
	r6 = D(r6, s1_1_0, 0xFCF5F3F6, 0x080311F7, 0xE62819DA, 0x13FC0CFA);
	r7 = D(r7, s1_1_0, 0x0EFF0522, 0xE0391D24, 0x0F080BF8, 0x140401F9);
	r0 = D(r0, s1_1_1, 0x18FA15D8, 0x0FEB03FF, 0xFFFF19FB, 0x0B0EEDE6);
	r1 = D(r1, s1_1_1, 0xF5CFFB10, 0x02F501F9, 0x0604440C, 0xE3F601F2);
	r2 = D(r2, s1_1_1, 0xF6DE0CE8, 0xE7F90717, 0xCAF81408, 0x15A8FAE3);
	r3 = D(r3, s1_1_1, 0x2305FDF3, 0xFAFF0201, 0xAB03FCEC, 0xEFF105FF);
	r4 = D(r4, s1_1_1, 0xF3011AFC, 0x20FCFFFB, 0xC8040013, 0x03FC0AF4);
	r5 = D(r5, s1_1_1, 0xF3FC0311, 0x05F6FEF4, 0x0A0000F9, 0x02FD0000);
	r6 = D(r6, s1_1_1, 0x02F21AEF, 0xECFD0901, 0x0414FEEE, 0x24110C07);
	r7 = D(r7, s1_1_1, 0x24F41897, 0x070C0403, 0xDAF6CD25, 0xEFF8F310);
	r0 = D(r0, s1_1_2, 0x03F9FAF7, 0xF8F30503, 0xF5E50312, 0xF50003ED);
	r1 = D(r1, s1_1_2, 0xF1EC01FB, 0x0E12FF04, 0x0E181003, 0x02E70108);
	r2 = D(r2, s1_1_2, 0x26D70204, 0x06E902FB, 0x16D609FD, 0xEB811EFF);
	r3 = D(r3, s1_1_2, 0x022603FC, 0xFD000101, 0xEBEB0B10, 0xF6EF01F8);
	r4 = D(r4, s1_1_2, 0xD9FB030B, 0xFC13F805, 0xF70E09FE, 0x0402F4FF);
	r5 = D(r5, s1_1_2, 0xFC0204FA, 0x03DCF211, 0x01000202, 0xFCFBFF08);
	r6 = D(r6, s1_1_2, 0x0FF605F8, 0xF400F600, 0xFFDAFBFA, 0x0801000A);
	r7 = D(r7, s1_1_2, 0xF10C0625, 0xFA32EFFE, 0xF2FE01EE, 0xFC080DFD);
	r0 = D(r0, s1_2_0, 0xEE01F7EF, 0xFC1412FF, 0x010608F8, 0xFC0F1013);
	r1 = D(r1, s1_2_0, 0x0EEC0206, 0x1404FC03, 0x0DFDF703, 0x04F2FAFF);
	r2 = D(r2, s1_2_0, 0x13F8FFED, 0xED05FB01, 0x0FFD0BFD, 0xFA27B7FB);
	r3 = D(r3, s1_2_0, 0x0810FEF2, 0xFBFC01FE, 0x0503F702, 0xEC030405);
	r4 = D(r4, s1_2_0, 0x03FB0303, 0xF50608FA, 0x09080BF3, 0xF2FA01FB);
	r5 = D(r5, s1_2_0, 0xFB000603, 0x00F6FB06, 0x0200FCFE, 0xF60104FD);
	r6 = D(r6, s1_2_0, 0x15F4FD00, 0x18E90D09, 0x1CE4F422, 0x28F50B03);
	r7 = D(r7, s1_2_0, 0xD40C0410, 0xE4160C05, 0x1EFE0E01, 0x03070DF6);
	r0 = D(r0, s1_2_1, 0xF4F814ED, 0x070204F4, 0x0F0008F9, 0x0606F5DC);
	r1 = D(r1, s1_2_1, 0x02F7090B, 0x070A05FF, 0x06F40F10, 0xF9020105);
	r2 = D(r2, s1_2_1, 0xF604F9EE, 0x070701FB, 0x08040707, 0x072D1BA6);
	r3 = D(r3, s1_2_1, 0x01F2FD06, 0x020000FD, 0xEE030EE6, 0xFFFDFD05);
	r4 = D(r4, s1_2_1, 0xEF080D0F, 0xF304FB13, 0x070C03F0, 0x1001F308);
	r5 = D(r5, s1_2_1, 0x08010507, 0xF50BF907, 0xFBFFFEFE, 0xF8FFFB02);
	r6 = D(r6, s1_2_1, 0xED020DFD, 0xEF161416, 0xF80C191E, 0x0C020A04);
	r7 = D(r7, s1_2_1, 0xFAFB1425, 0xF9E6F106, 0xF902FFF7, 0x0701FC0E);
	r0 = D(r0, s1_2_2, 0xF9F3F7F9, 0x09EDFE03, 0xFFF706FB, 0x02F30AFB);
	r1 = D(r1, s1_2_2, 0xF90E0EFC, 0xF4091708, 0xFEFD050E, 0xF6F70710);
	r2 = D(r2, s1_2_2, 0xF7FEFE18, 0xFE05010E, 0x0B030202, 0xF583F4FA);
	r3 = D(r3, s1_2_2, 0x100BFFFC, 0x00010100, 0xFDF1FCEB, 0x1305F903);
	r4 = D(r4, s1_2_2, 0xECFB1200, 0x0005FBFE, 0x08020AF3, 0x0006FD0A);
	r5 = D(r5, s1_2_2, 0x020005FA, 0x00FAFA07, 0x01FDFE02, 0xFAFE010A);
	r6 = D(r6, s1_2_2, 0xFFEEFC05, 0x04091209, 0x0D060A09, 0x0109070B);
	r7 = D(r7, s1_2_2, 0x000BF9EE, 0x170DF5EF, 0x10FE1611, 0x01F207F7);
	s0_0_0 = G[2][xy.y+0][xy.x+0]; s0_0_1 = G[2][xy.y+0][xy.x+1];
	s0_0_2 = G[2][xy.y+0][xy.x+2]; s0_1_0 = G[2][xy.y+1][xy.x+0];
	s0_1_1 = G[2][xy.y+1][xy.x+1]; s0_1_2 = G[2][xy.y+1][xy.x+2];
	s0_2_0 = G[2][xy.y+2][xy.x+0]; s0_2_1 = G[2][xy.y+2][xy.x+1];
	s0_2_2 = G[2][xy.y+2][xy.x+2]; s1_0_0 = G[3][xy.y+0][xy.x+0];
	s1_0_1 = G[3][xy.y+0][xy.x+1]; s1_0_2 = G[3][xy.y+0][xy.x+2];
	s1_1_0 = G[3][xy.y+1][xy.x+0]; s1_1_1 = G[3][xy.y+1][xy.x+1];
	s1_1_2 = G[3][xy.y+1][xy.x+2]; s1_2_0 = G[3][xy.y+2][xy.x+0];
	s1_2_1 = G[3][xy.y+2][xy.x+1]; s1_2_2 = G[3][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xF900F2FD, 0xFB03D903, 0x0DE90C03, 0x010EFDF2);
	r1 = D(r1, s0_0_0, 0x0602F200, 0xF3FA04FF, 0x04EFFD08, 0x01FBFD07);
	r2 = D(r2, s0_0_0, 0xF912FAFA, 0xFA0D1909, 0xF10B130F, 0x07253711);
	r3 = D(r3, s0_0_0, 0x000D02E9, 0xFEF7FF01, 0x031004F0, 0x06E805F5);
	r4 = D(r4, s0_0_0, 0xF30814FD, 0xFCFF00F6, 0x0311FA07, 0x00F703FF);
	r5 = D(r5, s0_0_0, 0x00FB0101, 0x01000C03, 0x00FDFDFC, 0x000808FE);
	r6 = D(r6, s0_0_0, 0x060EFFFE, 0x0508FDFC, 0x01E703F9, 0x0B03F9F7);
	r7 = D(r7, s0_0_0, 0xF105E1FF, 0xF6C108ED, 0x04140CF3, 0xF5FDF003);
	r0 = D(r0, s0_0_1, 0xE2DAF3F5, 0x01F3F9F5, 0xF5CBF8F1, 0xF3F00E03);
	r1 = D(r1, s0_0_1, 0xF008E1F8, 0x00F3FCED, 0xF603FBF1, 0xFB01FAFF);
	r2 = D(r2, s0_0_1, 0x0B0919F7, 0x0602F400, 0x16011411, 0x0A8122CE);
	r3 = D(r3, s0_0_1, 0xFA04F70D, 0x020103FC, 0xF503FDF6, 0xEE03FE03);
	r4 = D(r4, s0_0_1, 0x000D0D0B, 0x020008E8, 0xFB07F2FB, 0xEEEC0CEC);
	r5 = D(r5, s0_0_1, 0xFFFE00FF, 0xF801F807, 0xFE0201F5, 0x0C0110F4);
	r6 = D(r6, s0_0_1, 0x080A11EC, 0xFD01EF08, 0xE60909F1, 0x0D13F800);
	r7 = D(r7, s0_0_1, 0x1E08E9E2, 0xE303F5DB, 0x2201E31E, 0x15041710);
	r0 = D(r0, s0_0_2, 0xFBFD010B, 0x0F03F4F8, 0xF2F413F3, 0xFEFEF3F3);
	r1 = D(r1, s0_0_2, 0xFE08F6FE, 0x0D11F6D5, 0xF6090C05, 0xFA07FD01);
	r2 = D(r2, s0_0_2, 0xEBF1F9F9, 0xEE03F400, 0x1505FB12, 0x0019CCF2);
	r3 = D(r3, s0_0_2, 0xFC050106, 0x0300FEFC, 0xF4FFEBF8, 0xF1FF0009);
	r4 = D(r4, s0_0_2, 0x07F6EEF7, 0x000EF905, 0x0C0BE9EE, 0xFFFB05F9);
	r5 = D(r5, s0_0_2, 0x010003FD, 0xEEF70B04, 0x05FFFDFF, 0x01FFFEFA);
	r6 = D(r6, s0_0_2, 0xF402F6FC, 0x01F70AF3, 0xE9F81FF2, 0x0904FBE5);
	r7 = D(r7, s0_0_2, 0x061B04F1, 0x07FBFAF3, 0x0E0EFF0C, 0x1AFCFBE1);
	r0 = D(r0, s0_1_0, 0xF00C07F6, 0x03F9DEF5, 0x09D8F608, 0xE90EF4EF);
	r1 = D(r1, s0_1_0, 0x00EAEF09, 0xFCE10104, 0x04FAFC11, 0x0C0CF802);
	r2 = D(r2, s0_1_0, 0x11DA0BFD, 0xF2E20A08, 0xF9DC051C, 0xEA8145F5);
	r3 = D(r3, s0_1_0, 0x011202EA, 0xFE05FF02, 0x00FC0901, 0x000802F2);
	r4 = D(r4, s0_1_0, 0x060D0D07, 0xF90905F4, 0x02CFF501, 0x0F000910);
	r5 = D(r5, s0_1_0, 0x020004FB, 0xFAF3FC08, 0x0001FDFE, 0xFDF80900);
	r6 = D(r6, s0_1_0, 0x01EBD4F9, 0xF9FDF701, 0x131D0705, 0x01E9FE0B);
	r7 = D(r7, s0_1_0, 0xF881F807, 0x07F9120B, 0xF20B00F9, 0x0DFEF8FE);
	r0 = D(r0, s0_1_1, 0xF7FE13C3, 0xFEC9E700, 0xF4080D04, 0xED1FEB09);
	r1 = D(r1, s0_1_1, 0x08F2DF12, 0xF702E9F4, 0x1CFDE103, 0xF7FEEB05);
	r2 = D(r2, s0_1_1, 0xEACEF9D4, 0xED050BD4, 0x06FEFF2E, 0xBB81FDB7);
	r3 = D(r3, s0_1_1, 0xD7EB1309, 0xFF00F8FF, 0xDCE312F6, 0xFDFDF1EC);
	r4 = D(r4, s0_1_1, 0xE5D800D8, 0xFD03E2F0, 0xFCEBE013, 0xD71203ED);
	r5 = D(r5, s0_1_1, 0xFBFE01F2, 0xFA090DF0, 0x04FEFDFE, 0xFC0909F8);
	r6 = D(r6, s0_1_1, 0x0A0D20F5, 0x140712EE, 0x0D162DE3, 0x020FF8FB);
	r7 = D(r7, s0_1_1, 0xF2B7E735, 0xF316F2EA, 0x1D04FB27, 0x09EAF906);
	r0 = D(r0, s0_1_2, 0x0CF7EAE5, 0x0BFBF7FD, 0x06F3EDF4, 0xDFFEFE0C);
	r1 = D(r1, s0_1_2, 0x120EEFEC, 0x16ED06CF, 0x15D819EF, 0x08DB02EC);
	r2 = D(r2, s0_1_2, 0xF8DFF1F5, 0xF8E6EF06, 0x03FE0709, 0x0BB081E2);
	r3 = D(r3, s0_1_2, 0x06060E07, 0xFF03FDFF, 0xEE02F908, 0xFF11F909);
	r4 = D(r4, s0_1_2, 0xFC06F00D, 0x00050102, 0x0A0D0103, 0xF1FF0108);
	r5 = D(r5, s0_1_2, 0x07040101, 0xF7FBEF1B, 0x000000FA, 0xF405FAF7);
	r6 = D(r6, s0_1_2, 0x07FCF8E5, 0x0823F3F3, 0x05F7040C, 0xF6FCFFF6);
	r7 = D(r7, s0_1_2, 0xD40A30E2, 0x082C07EF, 0xD9F723FC, 0x120011EF);
	r0 = D(r0, s0_2_0, 0xE603FE03, 0x0906F3F1, 0xF801FC04, 0xF504FFF5);
	r1 = D(r1, s0_2_0, 0x04FDF7FC, 0xFFF1F5E8, 0xFA000916, 0x07FDF8FD);
	r2 = D(r2, s0_2_0, 0xF90311FC, 0xFAF90201, 0xF9D119FD, 0x1ECE03F8);
	r3 = D(r3, s0_2_0, 0xF42A15F3, 0xFDFA00FF, 0x12FE09F6, 0x07FE0307);
	r4 = D(r4, s0_2_0, 0xF4E3F811, 0x06FF0001, 0x07F4FF07, 0xFAF0F904);
	r5 = D(r5, s0_2_0, 0x04FA02FD, 0xF9F1F804, 0xFDFFFEFD, 0x000B0005);
	r6 = D(r6, s0_2_0, 0xFEF2EAF9, 0x08DAEAFC, 0x11CBFA06, 0x10F7FEFD);
	r7 = D(r7, s0_2_0, 0x0917DD03, 0xEF0403FF, 0x17FC0010, 0x09F70DFD);
	r0 = D(r0, s0_2_1, 0x010E04E8, 0xEFFC00F6, 0xF9FE0002, 0xF5050CF1);
	r1 = D(r1, s0_2_1, 0x10C2F4F2, 0xFDD5F0DC, 0x0BFF0A04, 0x0EE8F7F4);
	r2 = D(r2, s0_2_1, 0xDD04FEEA, 0xFC0E02F2, 0x04E81B05, 0x193312C4);
	r3 = D(r3, s0_2_1, 0xE10E0C11, 0xFE010401, 0xEF1709EC, 0xF2ED0604);
	r4 = D(r4, s0_2_1, 0xF4FB0DF7, 0xFD110704, 0xFF00FDF4, 0xF0F8FE05);
	r5 = D(r5, s0_2_1, 0xF9FF03F8, 0x1307F60C, 0x03FE0101, 0x000DFE01);
	r6 = D(r6, s0_2_1, 0x14FDF6FC, 0x23C201F3, 0x1AD7F804, 0x1BD80103);
	r7 = D(r7, s0_2_1, 0x28E3ED25, 0xEFFB11F2, 0x2A08F313, 0xF513F303);
	r0 = D(r0, s0_2_2, 0xF2F8EA02, 0xFAF5E002, 0xF6C4F1F3, 0xEE1F0BE3);
	r1 = D(r1, s0_2_2, 0x01E6F0F5, 0x10E1F4D2, 0xF20FFE06, 0x03EDF8EF);
	r2 = D(r2, s0_2_2, 0x0008F3F4, 0xFBEEFFF4, 0xE5F51705, 0xE41BA10C);
	r3 = D(r3, s0_2_2, 0x0A07FA09, 0x00FFFDFC, 0xE2140414, 0x05E80E07);
	r4 = D(r4, s0_2_2, 0xDF1AFE04, 0x0803F903, 0x0005F904, 0xFEF308FC);
	r5 = D(r5, s0_2_2, 0x04FBFEF8, 0xF51B0B0D, 0x0101FDFF, 0x00F808FB);
	r6 = D(r6, s0_2_2, 0x0421F5F9, 0xF8FD10ED, 0x12C1E30A, 0x060600EB);
	r7 = D(r7, s0_2_2, 0x12C7EF10, 0x1505F8FE, 0x0E0924FE, 0x10EB0904);
	r0 = D(r0, s1_0_0, 0x1BFF08F7, 0xFB01F111, 0xF9F4FF13, 0xF20905E8);
	r1 = D(r1, s1_0_0, 0xFFD70420, 0x060500E5, 0x020502EA, 0xFBF30100);
	r2 = D(r2, s1_0_0, 0xFF030005, 0xEB0104C4, 0xF404E6E1, 0x361EF2F6);
	r3 = D(r3, s1_0_0, 0xF403FCFA, 0x00010208, 0xF9F608FF, 0x040800FA);
	r4 = D(r4, s1_0_0, 0x05F503D2, 0x0303FC11, 0xF6F0FC1B, 0x0302F704);
	r5 = D(r5, s1_0_0, 0xFF020103, 0x0301F205, 0x030002FD, 0x0201FFDD);
	r6 = D(r6, s1_0_0, 0x09FFFAFE, 0xFCF90A0A, 0x0407F5F8, 0xFFF4FFF4);
	r7 = D(r7, s1_0_0, 0xF514F9F6, 0x0710FAE6, 0xFA04F809, 0x0A0CF6EA);
	r0 = D(r0, s1_0_1, 0x05FE071D, 0xF905FA13, 0x0709120A, 0x1AFF0507);
	r1 = D(r1, s1_0_1, 0xF5090D17, 0x08F107FE, 0x09041105, 0x0CEBF7DE);
	r2 = D(r2, s1_0_1, 0x01F404F9, 0xFCFBF5F2, 0xE807E600, 0xF4F52311);
	r3 = D(r3, s1_0_1, 0xF7FB0009, 0xFE02FE0A, 0xFA07FAF5, 0xFCFA04F7);
	r4 = D(r4, s1_0_1, 0xFD0302F9, 0x00FF0000, 0x00F7EDFA, 0xFD0102F4);
	r5 = D(r5, s1_0_1, 0x010300FB, 0xFBFEFC07, 0xF9F8FCFB, 0xFF0AF902);
	r6 = D(r6, s1_0_1, 0xFFF60EFD, 0x02090803, 0xFA0607F8, 0x00FB0500);
	r7 = D(r7, s1_0_1, 0x18FEC3FF, 0x24F900CF, 0x0F04DE03, 0x08110AEB);
	r0 = D(r0, s1_0_2, 0xFEF010F9, 0x00FA0DF1, 0xFD0404FF, 0x06F400F2);
	r1 = D(r1, s1_0_2, 0xFEF411F8, 0x0B06100B, 0x00F11209, 0x03040704);
	r2 = D(r2, s1_0_2, 0xFB1009FA, 0x080AFD0F, 0x0209F0FD, 0x10CC33FD);
	r3 = D(r3, s1_0_2, 0x06060DFF, 0x02FF03FD, 0x040C0508, 0xFF04FB05);
	r4 = D(r4, s1_0_2, 0x0C051200, 0x0100FC01, 0x0101FD05, 0x05FF00FC);
	r5 = D(r5, s1_0_2, 0x00FF0000, 0x0B03F708, 0x03FFFFFE, 0xFB0804FF);
	r6 = D(r6, s1_0_2, 0xF80D0307, 0x05F609FF, 0x0B0302FC, 0x0EFD0703);
	r7 = D(r7, s1_0_2, 0x2BF726FC, 0xFF0012FF, 0x110C14F6, 0x09FB2500);
	r0 = D(r0, s1_1_0, 0x1BE4071E, 0xFFF4F90A, 0x00F8F903, 0x02030804);
	r1 = D(r1, s1_1_0, 0xE9EF0811, 0xEEF507F2, 0x10060EC7, 0xE9F5FD0C);
	r2 = D(r2, s1_1_0, 0xFB0407EA, 0x06E701FD, 0xC811D8C8, 0xF832EA1B);
	r3 = D(r3, s1_1_0, 0x1D08FB0C, 0xFE01F93B, 0xF2F2F716, 0x0FEBFE24);
	r4 = D(r4, s1_1_0, 0xF1EC0D0F, 0x04F50201, 0x04F9FB11, 0x01EF0C04);
	r5 = D(r5, s1_1_0, 0x0100000D, 0xFDF10AF9, 0xFFFFFF01, 0xF00C00E2);
	r6 = D(r6, s1_1_0, 0x0727EDE7, 0xFAFAF31A, 0x1CF20B08, 0xDE09F9DB);
	r7 = D(r7, s1_1_0, 0xE628CD2D, 0x00D91748, 0x1F17FA0A, 0x030AFA0F);
	r0 = D(r0, s1_1_1, 0xFB070414, 0xD20FFC21, 0x01FF0A0D, 0x1FF20906);
	r1 = D(r1, s1_1_1, 0xB305F101, 0xD506FFF5, 0xE618E6DF, 0xF3FDFEF5);
	r2 = D(r2, s1_1_1, 0xF5D617E1, 0x11F609FA, 0xDFE7D9FA, 0xBF811706);
	r3 = D(r3, s1_1_1, 0xFF0AF1EF, 0xFD0C0918, 0x05F12818, 0xE5F20C0F);
	r4 = D(r4, s1_1_1, 0xF7081506, 0x091213FB, 0x13DA0B04, 0x0B0000EA);
	r5 = D(r5, s1_1_1, 0xE5FA0116, 0x01F402ED, 0x1B060805, 0xFCFD02FD);
	r6 = D(r6, s1_1_1, 0xF50CF8D6, 0xCF00E8FE, 0x030824EA, 0xE8FCE9E4);
	r7 = D(r7, s1_1_1, 0xCEF8BAA6, 0xFFE91004, 0x920ECDD6, 0xF1F8FFE7);
	r0 = D(r0, s1_1_2, 0xFA1002FB, 0x0202FAF8, 0xF10E0308, 0xF9F8130E);
	r1 = D(r1, s1_1_2, 0xFB1105FC, 0xF203E3F9, 0xFE010E10, 0xFE010CF9);
	r2 = D(r2, s1_1_2, 0xEB09010B, 0xEDF909F3, 0x0306F80D, 0xD5082908);
	r3 = D(r3, s1_1_2, 0x0608040A, 0x0105FF03, 0xF015F304, 0x00080300);
	r4 = D(r4, s1_1_2, 0xFD08F1FD, 0x08FEFCFB, 0xF1E7E8EB, 0x0EFF0107);
	r5 = D(r5, s1_1_2, 0xFEFFF702, 0xF4FE0901, 0x03FB0100, 0xFC10FF02);
	r6 = D(r6, s1_1_2, 0xFA0D0801, 0x0406EE1F, 0xE50BF912, 0x01F50605);
	r7 = D(r7, s1_1_2, 0xFD11CFEF, 0xF70EFCFD, 0xFF09CDF7, 0x05FEFFFF);
	r0 = D(r0, s1_2_0, 0x0DF60413, 0xEDF6F225, 0xFDFDFE01, 0x10E6FF14);
	r1 = D(r1, s1_2_0, 0xF901F401, 0x09030AF9, 0xFFFE0406, 0x02030201);
	r2 = D(r2, s1_2_0, 0x0BF50A02, 0x0C080107, 0xE9100C09, 0x10F30900);
	r3 = D(r3, s1_2_0, 0xFBF50412, 0xFF01FF04, 0xF5FFFF0C, 0xFEEE0305);
	r4 = D(r4, s1_2_0, 0xED020D00, 0x01F8FE02, 0xFAFCFDF7, 0x01F506F2);
	r5 = D(r5, s1_2_0, 0x00FC0300, 0x10FBFFF6, 0x00030100, 0x1502F805);
	r6 = D(r6, s1_2_0, 0x061F00F2, 0xDC32EE02, 0xC721FCD8, 0xA60FF4E9);
	r7 = D(r7, s1_2_0, 0x09F018D9, 0xFCEE15ED, 0x0D0C05ED, 0xFFFCF70C);
	r0 = D(r0, s1_2_1, 0x1913F70A, 0xF9FE0E07, 0x1101070F, 0x1204F403);
	r1 = D(r1, s1_2_1, 0xE301E2FD, 0xF600F5FA, 0xE1FC0203, 0xF501F100);
	r2 = D(r2, s1_2_1, 0xFA02EF07, 0xF70CF80B, 0xF7EE1103, 0xD786E41C);
	r3 = D(r3, s1_2_1, 0x0EF9FC05, 0x00FFF904, 0x1705090D, 0xE9FE090B);
	r4 = D(r4, s1_2_1, 0xF3FA0812, 0xFD0807FA, 0x0E00FE07, 0xE50508FF);
	r5 = D(r5, s1_2_1, 0x02FD0100, 0xF2FCF810, 0xFEFF02FF, 0x0606F70B);
	r6 = D(r6, s1_2_1, 0xE10BF503, 0xE800EA0C, 0xA90AEA07, 0xBD08F3FC);
	r7 = D(r7, s1_2_1, 0xD602E9F6, 0xF5020DF3, 0x1BF0F4F9, 0x00F80B07);
	r0 = D(r0, s1_2_2, 0x09F60301, 0xF6070402, 0x050701F7, 0x1005F0F9);
	r1 = D(r1, s1_2_2, 0xFBF10103, 0x0200F3FB, 0x13F8FBF7, 0xEA0004FC);
	r2 = D(r2, s1_2_2, 0x16FC0CFE, 0xFEFCFA02, 0x0AFD0D02, 0xFDE8FFF4);
	r3 = D(r3, s1_2_2, 0x0401FC04, 0x0201FFFF, 0xFE0AFF03, 0xFFFCFEFC);
	r4 = D(r4, s1_2_2, 0x0B0704F9, 0xFFFCFB05, 0x0B07FE03, 0x03F70106);
	r5 = D(r5, s1_2_2, 0xFE0504F9, 0xFAFDEF05, 0x02FF0107, 0xFA030000);
	r6 = D(r6, s1_2_2, 0xF9000902, 0x070606F9, 0xF0F2E8F0, 0xF1FDFAFF);
	r7 = D(r7, s1_2_2, 0xFA04EE09, 0x1CEFEE0D, 0x0710FCFF, 0x0603FBFC);
	s0_0_0 = G[4][xy.y+0][xy.x+0]; s0_0_1 = G[4][xy.y+0][xy.x+1];
	s0_0_2 = G[4][xy.y+0][xy.x+2]; s0_1_0 = G[4][xy.y+1][xy.x+0];
	s0_1_1 = G[4][xy.y+1][xy.x+1]; s0_1_2 = G[4][xy.y+1][xy.x+2];
	s0_2_0 = G[4][xy.y+2][xy.x+0]; s0_2_1 = G[4][xy.y+2][xy.x+1];
	s0_2_2 = G[4][xy.y+2][xy.x+2]; s1_0_0 = G[5][xy.y+0][xy.x+0];
	s1_0_1 = G[5][xy.y+0][xy.x+1]; s1_0_2 = G[5][xy.y+0][xy.x+2];
	s1_1_0 = G[5][xy.y+1][xy.x+0]; s1_1_1 = G[5][xy.y+1][xy.x+1];
	s1_1_2 = G[5][xy.y+1][xy.x+2]; s1_2_0 = G[5][xy.y+2][xy.x+0];
	s1_2_1 = G[5][xy.y+2][xy.x+1]; s1_2_2 = G[5][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xF20BF3FC, 0x03EB17E9, 0xE905090D, 0xF9D0FEDB);
	r1 = D(r1, s0_0_0, 0x0504FC05, 0x17E404F4, 0x04F50807, 0x040700F0);
	r2 = D(r2, s0_0_0, 0x13EF05F8, 0x07E4EBDB, 0x21DF01E0, 0xF9A40181);
	r3 = D(r3, s0_0_0, 0xF9FEEFF4, 0x01FE03FF, 0xFE15F802, 0x010B07FE);
	r4 = D(r4, s0_0_0, 0x07FEF3ED, 0x07FC0108, 0x02FF030C, 0x1001FFF5);
	r5 = D(r5, s0_0_0, 0x02FF01FC, 0xFE12E900, 0x01FB0102, 0x0CE20DEE);
	r6 = D(r6, s0_0_0, 0x07EFFBD1, 0x03E50209, 0xF63A03FD, 0x01EC09FC);
	r7 = D(r7, s0_0_0, 0x213017A0, 0x0DF10BFC, 0xFAE828E6, 0xFAC61207);
	r0 = D(r0, s0_0_1, 0x06FEE807, 0xE1080AEE, 0xE117101F, 0xEDFAFD09);
	r1 = D(r1, s0_0_1, 0xEF111911, 0xEFD40ECB, 0xCAE703E8, 0x0A02FCFC);
	r2 = D(r2, s0_0_1, 0x05F8EB09, 0xF303DB0F, 0xE205EFFE, 0x073B2B1A);
	r3 = D(r3, s0_0_1, 0xE7FAE702, 0xF80003F7, 0x150AFE0F, 0x140902FF);
	r4 = D(r4, s0_0_1, 0x0604F8FF, 0x0DFD08F7, 0x01F207FA, 0x06F004F8);
	r5 = D(r5, s0_0_1, 0x00FD0600, 0x1A08F614, 0x00FFFCF5, 0xE50B02F8);
	r6 = D(r6, s0_0_1, 0xF7FCE5FB, 0x12001905, 0xF8E525C1, 0x00F806F7);
	r7 = D(r7, s0_0_1, 0xD9FB2DE7, 0x0EF504BF, 0xFF04301C, 0xC20203E5);
	r0 = D(r0, s0_0_2, 0xFA01E7EB, 0x1001F9F6, 0xF10903F4, 0xEC04FC06);
	r1 = D(r1, s0_0_2, 0x24F20FF2, 0xE20C10DE, 0x0AF9F9FD, 0x09FC04F8);
	r2 = D(r2, s0_0_2, 0x28F20CF1, 0x07EAF6FC, 0x29FD0AFE, 0x42354428);
	r3 = D(r3, s0_0_2, 0xFEEEF1FC, 0x00FE02FE, 0xCDF2FC0C, 0xFDFE0301);
	r4 = D(r4, s0_0_2, 0xE5F8F419, 0xF4000402, 0xEDF5FDF9, 0x0906F9FA);
	r5 = D(r5, s0_0_2, 0xFD0102FB, 0x0109FA11, 0x00010003, 0x0CFA06F9);
	r6 = D(r6, s0_0_2, 0x1CF811F8, 0x04F6F5FC, 0xF4F501F6, 0x05050100);
	r7 = D(r7, s0_0_2, 0x811721F2, 0xEAFC0CF9, 0xFF091B02, 0xDC0B02F4);
	r0 = D(r0, s0_1_0, 0xF418FB01, 0xFA110A0A, 0xF9FB07F2, 0xFE09FD08);
	r1 = D(r1, s0_1_0, 0x02F3040D, 0x1D0C10E5, 0xFFFC0B12, 0xFE000610);
	r2 = D(r2, s0_1_0, 0x15FBFBED, 0x0806F8F3, 0xE81201A5, 0x361601C3);
	r3 = D(r3, s0_1_0, 0x0C15F9F2, 0xFB0AFFFF, 0xEB22F405, 0xF917F906);
	r4 = D(r4, s0_1_0, 0xEF06000D, 0xF6F9041A, 0xFE040412, 0x14FAF3FE);
	r5 = D(r5, s0_1_0, 0x010102FF, 0x0CF4FE05, 0x050000FA, 0xFE0E0301);
	r6 = D(r6, s0_1_0, 0xFB1309C8, 0x010809E9, 0xDEEC01D5, 0x15EE03FB);
	r7 = D(r7, s0_1_0, 0xBEDEF1C7, 0xDFF70204, 0xFCF9FBF6, 0x0300020A);
	r0 = D(r0, s0_1_1, 0x0403090F, 0xFFEF14FF, 0xFE0DFFF7, 0xEBDCF9F2);
	r1 = D(r1, s0_1_1, 0xC6011513, 0xD82708CF, 0xEEEF03F1, 0xE6190AFD);
	r2 = D(r2, s0_1_1, 0xEC0BEC0B, 0x10FAEBFC, 0xEC14F90F, 0xF5071100);
	r3 = D(r3, s0_1_1, 0x3316EFC8, 0xFE000011, 0x10FC0C03, 0x110A0411);
	r4 = D(r4, s0_1_1, 0xFCEA0705, 0x07F602E1, 0x16E80308, 0xF90C020B);
	r5 = D(r5, s0_1_1, 0x02FE04F8, 0xFF290122, 0x00FDFE09, 0xFB0A01EE);
	r6 = D(r6, s0_1_1, 0x0604EDBB, 0xF40D10D6, 0xEC1526C5, 0xF711FEDB);
	r7 = D(r7, s0_1_1, 0xDD10F5DB, 0xE3DEF7E0, 0xD502E9B6, 0xECE6FDE5);
	r0 = D(r0, s0_1_2, 0x0FF800F8, 0x070B05FF, 0xEA010C0E, 0x10F6F4F0);
	r1 = D(r1, s0_1_2, 0x0006030D, 0x07FBF7DA, 0x1BEB06B3, 0x080308F0);
	r2 = D(r2, s0_1_2, 0x0B0918E6, 0x06FFFCED, 0x03070A08, 0xECF0F505);
	r3 = D(r3, s0_1_2, 0xF210F00E, 0x02FFFF02, 0xF1EE0313, 0xF1FC020F);
	r4 = D(r4, s0_1_2, 0xEBF10008, 0xF10AFEF9, 0x0808F7FE, 0x03F50D09);
	r5 = D(r5, s0_1_2, 0x02FEFDF7, 0x02F60AF7, 0xFF05FD03, 0xFF0106EF);
	r6 = D(r6, s0_1_2, 0x1BF60FDC, 0xEF18FE0A, 0xD318E1F6, 0xF506FFFF);
	r7 = D(r7, s0_1_2, 0xF00208DC, 0xE0E8F4DE, 0xEAFD0E13, 0xFC09FCE7);
	r0 = D(r0, s0_2_0, 0xFD0503FA, 0x081C02FF, 0xE8E70A05, 0xEEF2F802);
	r1 = D(r1, s0_2_0, 0xF9F70609, 0xEDFD0206, 0xF7F5F601, 0xFCEE07FC);
	r2 = D(r2, s0_2_0, 0x13E20DF9, 0xF6040414, 0xFFF7FDDF, 0x232E3C12);
	r3 = D(r3, s0_2_0, 0x230CF601, 0xFDFB0000, 0xDAFEFAF0, 0x040604F9);
	r4 = D(r4, s0_2_0, 0xECF40DF9, 0xF7F306FA, 0x08F70500, 0xFDFC03F4);
	r5 = D(r5, s0_2_0, 0x02FD0404, 0xF70C02FE, 0x03FCFEFE, 0xF005020A);
	r6 = D(r6, s0_2_0, 0xE7B607DD, 0xF3E10803, 0xDE2300DF, 0x0B03FFEC);
	r7 = D(r7, s0_2_0, 0xF00DFA12, 0x050C14F8, 0xFD00160B, 0xEA0CF3F3);
	r0 = D(r0, s0_2_1, 0xF6F70C08, 0x0814050E, 0xDD11F808, 0xFB0102FD);
	r1 = D(r1, s0_2_1, 0x04EB0BC6, 0x1EC50EAF, 0x03FEFE0C, 0x02FC0201);
	r2 = D(r2, s0_2_1, 0x0DF10AF9, 0xEEF8F40E, 0x102DFDF0, 0xD05AD6F2);
	r3 = D(r3, s0_2_1, 0xDCCC0013, 0x010700FB, 0xF1130A09, 0x04FD0F07);
	r4 = D(r4, s0_2_1, 0xF5E30B0A, 0x09F7FD02, 0x19F70609, 0x08FE00E4);
	r5 = D(r5, s0_2_1, 0xFB0506F9, 0xF6090813, 0x02FCFE00, 0x0105FDFA);
	r6 = D(r6, s0_2_1, 0x1DEDF2D9, 0x13EE0894, 0xF025FA99, 0xFB09FADE);
	r7 = D(r7, s0_2_1, 0xF1C1D3FA, 0xDD31F6F7, 0x03191C0F, 0xE0FF02FC);
	r0 = D(r0, s0_2_2, 0xFDF5FC0C, 0xFAFE0405, 0xE5F502F1, 0xF5E8F9FB);
	r1 = D(r1, s0_2_2, 0x040A07ED, 0x0FFC0ADF, 0x00CFFB0A, 0xF70007F8);
	r2 = D(r2, s0_2_2, 0xEFF90BEF, 0xF2F5FBF9, 0x080105F9, 0xF7AD29C2);
	r3 = D(r3, s0_2_2, 0x060E07FB, 0xFFFE02FE, 0xF3F8FF10, 0x10080102);
	r4 = D(r4, s0_2_2, 0xEEDE1707, 0xFE0802FD, 0x04F30DFE, 0xF6F4F8F6);
	r5 = D(r5, s0_2_2, 0x08FE01FB, 0x0105FB1A, 0xFD020103, 0xF5FD02F9);
	r6 = D(r6, s0_2_2, 0x10EB10FD, 0x190104DF, 0x1F18FF16, 0x020902FD);
	r7 = D(r7, s0_2_2, 0xF503FAEE, 0x181EFAEE, 0x04FD08FE, 0xFEEAFCF6);
	r0 = D(r0, s1_0_0, 0x0BEEEB03, 0x1C23FEF3, 0xF3100302, 0xEB0B1004);
	r1 = D(r1, s1_0_0, 0x0AFA0D01, 0x05F7FD04, 0xFC0AF8F6, 0x08FE0F00);
	r2 = D(r2, s1_0_0, 0xF9EAFAFB, 0xFEE51005, 0x021FE90E, 0x1616E50B);
	r3 = D(r3, s1_0_0, 0xF307F6FA, 0x0103FD01, 0xDDE51705, 0xF9F4EB02);
	r4 = D(r4, s1_0_0, 0x03F1EE02, 0x0BFC0004, 0x00E20304, 0xF7EF00FE);
	r5 = D(r5, s1_0_0, 0x02020100, 0xF9F304FF, 0x0402FE01, 0x090C0901);
	r6 = D(r6, s1_0_0, 0x0A04EB05, 0x0BF0ECFF, 0x06DBF207, 0x0306E901);
	r7 = D(r7, s1_0_0, 0x2443EE15, 0x0EFE111E, 0x181A04EE, 0x1C270100);
	r0 = D(r0, s1_0_1, 0x14F50204, 0x0E160103, 0xFCE901FC, 0xFEFEE80F);
	r1 = D(r1, s1_0_1, 0x06F60F06, 0x191602FB, 0x170301F4, 0x061A0D07);
	r2 = D(r2, s1_0_1, 0xF9EE12FC, 0xF4F70605, 0xFCF8F509, 0xD2C624FC);
	r3 = D(r3, s1_0_1, 0xFFF0EBF0, 0x05010401, 0xFA100904, 0xF8F40403);
	r4 = D(r4, s1_0_1, 0xFD0C0904, 0x030CF905, 0xFF2301FA, 0x00F7FC00);
	r5 = D(r5, s1_0_1, 0x05040202, 0xF4010902, 0x00FEFEFF, 0x11050503);
	r6 = D(r6, s1_0_1, 0xFBED0F02, 0x060C0E08, 0xF7E5F702, 0x11020700);
	r7 = D(r7, s1_0_1, 0x0F02E71E, 0x1002EE18, 0xD0FFE6F8, 0x0A0DFD02);
	r0 = D(r0, s1_0_2, 0xD4FDFE01, 0xF8FF0A01, 0x050A1308, 0x0304FB0B);
	r1 = D(r1, s1_0_2, 0x0401FD0E, 0x1BF7F1F7, 0xFD06F9D5, 0x08FDF60A);
	r2 = D(r2, s1_0_2, 0xF1FC090C, 0xEE050005, 0x0BFFF80F, 0xF1C1F239);
	r3 = D(r3, s1_0_2, 0xF101F4F5, 0x03020000, 0x100907EF, 0x020207FF);
	r4 = D(r4, s1_0_2, 0xF2E4EA05, 0x010202F7, 0x12FEFAF5, 0xFBF7F9FD);
	r5 = D(r5, s1_0_2, 0x05040002, 0xF8FDFE05, 0x00FF00FF, 0x05040603);
	r6 = D(r6, s1_0_2, 0xF8010503, 0x0CF804FB, 0x0809EE08, 0x04FFF700);
	r7 = D(r7, s1_0_2, 0x1601FB17, 0x01FA1BFA, 0xFEF3F6F9, 0x0D0E0F01);
	r0 = D(r0, s1_1_0, 0x01F6F408, 0x150101F7, 0x0301FC0A, 0xF4FCEF0D);
	r1 = D(r1, s1_1_0, 0x0A08FAFF, 0x0E090405, 0x0FFE03F1, 0x0505F7F5);
	r2 = D(r2, s1_1_0, 0xFA090D00, 0x0003FB0C, 0x0323050D, 0x240EFFF8);
	r3 = D(r3, s1_1_0, 0xF0EB1EF3, 0x03FF0201, 0xFDF90B0A, 0xF1F60703);
	r4 = D(r4, s1_1_0, 0x06DEFCFA, 0xFFF902FC, 0xF3000802, 0xF10801FD);
	r5 = D(r5, s1_1_0, 0x02FD0400, 0xF701F901, 0x0201FF02, 0xFCFF0402);
	r6 = D(r6, s1_1_0, 0x131AFCED, 0x0F26F404, 0x11F6070D, 0x1516FC03);
	r7 = D(r7, s1_1_0, 0x0BF6F016, 0x08D00D0C, 0x00F7F8FF, 0xFFF00E08);
	r0 = D(r0, s1_1_1, 0x02FD1206, 0x09080609, 0x04081609, 0x120AFC05);
	r1 = D(r1, s1_1_1, 0x0E021703, 0x141B0E08, 0x0D0F1AE8, 0x12021E02);
	r2 = D(r2, s1_1_1, 0xD600F70E, 0x0510E001, 0x1A04EC06, 0xFCEA1C01);
	r3 = D(r3, s1_1_1, 0xE8F30CF1, 0x06FEFC05, 0x00E9FE09, 0xF206EE08);
	r4 = D(r4, s1_1_1, 0xF5F2FC11, 0xFDF713FB, 0x01F1EE08, 0xF107FBF6);
	r5 = D(r5, s1_1_1, 0x0704FB07, 0xEC04EBFF, 0xFFFBFCFE, 0x060B01FD);
	r6 = D(r6, s1_1_1, 0xF1FA07EE, 0x1907FB02, 0x0CE4EFF5, 0x08110FFC);
	r7 = D(r7, s1_1_1, 0x0B002381, 0x0ADEFE1B, 0xFFF8FBFF, 0xF9F4000C);
	r0 = D(r0, s1_1_2, 0xD9F617FD, 0x04FE100C, 0x1503F405, 0xFA06080D);
	r1 = D(r1, s1_1_2, 0xFF0700FE, 0x04022A03, 0x05F10AF7, 0x06011106);
	r2 = D(r2, s1_1_2, 0x02F3F700, 0x0801D200, 0x0D07F906, 0x0F0E2B13);
	r3 = D(r3, s1_1_2, 0xF5F808E8, 0x04000001, 0x09EFF8FF, 0x1008F205);
	r4 = D(r4, s1_1_2, 0xE6FBED0C, 0xFD000CF6, 0x00F4FA00, 0xFC0705FF);
	r5 = D(r5, s1_1_2, 0x07030002, 0x01F60AFB, 0xFFFE04FF, 0x05070205);
	r6 = D(r6, s1_1_2, 0xFF07E709, 0x1709F7FE, 0x10FCFBFF, 0x0BFEFE07);
	r7 = D(r7, s1_1_2, 0x33130B2F, 0x0AFF12EC, 0x23FF1810, 0xFFFE1702);
	r0 = D(r0, s1_2_0, 0xF8F6FB01, 0x05000AFB, 0xFF070209, 0x0C0F060F);
	r1 = D(r1, s1_2_0, 0x1707FCFD, 0x05F7F70E, 0xFA06F1F1, 0x0F0507F9);
	r2 = D(r2, s1_2_0, 0xFEFB050B, 0x0BFD0605, 0xF200160B, 0x10111522);
	r3 = D(r3, s1_2_0, 0xFF1F01F9, 0x03020101, 0x010A0D05, 0xF4F70702);
	r4 = D(r4, s1_2_0, 0xFD00FBFC, 0x0C020202, 0x05010505, 0xF9FDFE01);
	r5 = D(r5, s1_2_0, 0xFE010000, 0xF9F4FBF8, 0x04000104, 0x020702FC);
	r6 = D(r6, s1_2_0, 0xF9F707FC, 0x1EFE09FE, 0x010B0C01, 0x0EFDFE07);
	r7 = D(r7, s1_2_0, 0x15F0FAFF, 0x011D0F0A, 0x0C02F2FA, 0x0502FE03);
	r0 = D(r0, s1_2_1, 0xFC03FE05, 0x041AF507, 0x0909F704, 0x08050CFB);
	r1 = D(r1, s1_2_1, 0x0FEE21FC, 0x28EFF310, 0xF2F001EF, 0x0FFC16FC);
	r2 = D(r2, s1_2_1, 0x0C07DD0C, 0x0D00EDFD, 0xFEF90B0C, 0x17CFE7FD);
	r3 = D(r3, s1_2_1, 0x0206F5E7, 0x05030501, 0x070FF902, 0xFA06EC05);
	r4 = D(r4, s1_2_1, 0x00FDE00D, 0xFF08EFFB, 0x0AFCF403, 0xFB0CF8FB);
	r5 = D(r5, s1_2_1, 0x06FF04FF, 0xF0F703F1, 0x00FFFA04, 0x040B0DFF);
	r6 = D(r6, s1_2_1, 0x02ED08F7, 0x0C052705, 0x08EA03F7, 0x14031703);
	r7 = D(r7, s1_2_1, 0x07F6F714, 0x1503D907, 0xF4FF1EF6, 0xFD07F302);
	r0 = D(r0, s1_2_2, 0xE2F7F002, 0x00090406, 0x0DFFF30E, 0xF013EF0D);
	r1 = D(r1, s1_2_2, 0xF7F51A03, 0x09EA0A07, 0xFC01F3E3, 0xFA041406);
	r2 = D(r2, s1_2_2, 0x09EAE005, 0xFAE2FC01, 0x0DF6E205, 0xE181983B);
	r3 = D(r3, s1_2_2, 0xE6EE0AF2, 0x03020101, 0x0523E6FD, 0x01F40B01);
	r4 = D(r4, s1_2_2, 0xF506C50A, 0x0A0109FA, 0x12FEEE01, 0xFD03F900);
	r5 = D(r5, s1_2_2, 0x00000503, 0xFE0BF3FE, 0x0401FCFE, 0x03010401);
	r6 = D(r6, s1_2_2, 0x1107CB0D, 0x09010F04, 0xD9D710FF, 0x05FB0606);
	r7 = D(r7, s1_2_2, 0x040E1509, 0x020C330A, 0x050D00FD, 0x04F20EFF);
	s0_0_0 = G[6][xy.y+0][xy.x+0]; s0_0_1 = G[6][xy.y+0][xy.x+1];
	s0_0_2 = G[6][xy.y+0][xy.x+2]; s0_1_0 = G[6][xy.y+1][xy.x+0];
	s0_1_1 = G[6][xy.y+1][xy.x+1]; s0_1_2 = G[6][xy.y+1][xy.x+2];
	s0_2_0 = G[6][xy.y+2][xy.x+0]; s0_2_1 = G[6][xy.y+2][xy.x+1];
	s0_2_2 = G[6][xy.y+2][xy.x+2]; s1_0_0 = G[7][xy.y+0][xy.x+0];
	s1_0_1 = G[7][xy.y+0][xy.x+1]; s1_0_2 = G[7][xy.y+0][xy.x+2];
	s1_1_0 = G[7][xy.y+1][xy.x+0]; s1_1_1 = G[7][xy.y+1][xy.x+1];
	s1_1_2 = G[7][xy.y+1][xy.x+2]; s1_2_0 = G[7][xy.y+2][xy.x+0];
	s1_2_1 = G[7][xy.y+2][xy.x+1]; s1_2_2 = G[7][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x19EDF1FD, 0x0203EAFF, 0x01060D07, 0xE411E908);
	r1 = D(r1, s0_0_0, 0x0C10F90D, 0xFC11FDFA, 0x02FFFF08, 0x0804F8F9);
	r2 = D(r2, s0_0_0, 0xF9F808FB, 0xF70C0407, 0xED04FEFF, 0x2FDFE4E0);
	r3 = D(r3, s0_0_0, 0xF6FC01FF, 0x010001FD, 0xF209FBFB, 0x0EF303FB);
	r4 = D(r4, s0_0_0, 0xF2FE1907, 0x0AF9F9FB, 0xFA10F500, 0x0B0EFDF4);
	r5 = D(r5, s0_0_0, 0xFE030300, 0x0402F2FB, 0xFFFEFBFF, 0xF20F0203);
	r6 = D(r6, s0_0_0, 0xF9F3FA0E, 0x05FA0305, 0x0700F5F7, 0xFF03FEFC);
	r7 = D(r7, s0_0_0, 0x08EAE809, 0xF5000010, 0x01E91DEE, 0xEDFCEB0D);
	r0 = D(r0, s0_0_1, 0x14E0F3F2, 0xFCF9EE10, 0x0CEB02EF, 0x0FE5EE0E);
	r1 = D(r1, s0_0_1, 0x0414F807, 0xFD0EEA07, 0x0614FEF0, 0xFA220004);
	r2 = D(r2, s0_0_1, 0xFA0508F8, 0x070E07FF, 0x0308F911, 0x1643F215);
	r3 = D(r3, s0_0_1, 0xFDF70509, 0x02000000, 0x0701FAFF, 0x000AFCF5);
	r4 = D(r4, s0_0_1, 0xE50C2512, 0x01F9FB00, 0xEE20F311, 0x06FC0901);
	r5 = D(r5, s0_0_1, 0x00020003, 0xFCFBFE05, 0x01FBFEFE, 0x01000202);
	r6 = D(r6, s0_0_1, 0xFEF907F5, 0xF7F2F90A, 0x1604FFEC, 0x07F0FDFF);
	r7 = D(r7, s0_0_1, 0x17DECC0C, 0xE8F2FE05, 0x04F0140D, 0xFCFBED01);
	r0 = D(r0, s0_0_2, 0xF7F9F701, 0xF200EE04, 0xE40A0500, 0xF318E000);
	r1 = D(r1, s0_0_2, 0xFB12F602, 0x05F3DE04, 0x0B0203F1, 0x010DF8FA);
	r2 = D(r2, s0_0_2, 0x03060209, 0x080503F5, 0x06FDFAF8, 0xF30D04FD);
	r3 = D(r3, s0_0_2, 0x0AFA05FA, 0x0002FE01, 0x07FE0706, 0x01090501);
	r4 = D(r4, s0_0_2, 0xF3070C0C, 0x08F7FCFF, 0xF60AEC07, 0x0AFC0002);
	r5 = D(r5, s0_0_2, 0x010300FC, 0x0403F7F4, 0xFDFDFE04, 0x0503FDFE);
	r6 = D(r6, s0_0_2, 0x0C00F804, 0x0E0503F1, 0x03F90300, 0x0007FD04);
	r7 = D(r7, s0_0_2, 0xFF13E7F7, 0x13EBF608, 0xFFF619F4, 0xDA09FA14);
	r0 = D(r0, s0_1_0, 0xF405FB18, 0x01F8F3F9, 0xFFF50206, 0xE406E209);
	r1 = D(r1, s0_1_0, 0x1504F4EB, 0xFAF4020A, 0x13F213F6, 0x1406F7F5);
	r2 = D(r2, s0_1_0, 0xF4F6FE00, 0x2305F808, 0x1BEFF2E3, 0xED1C0CFE);
	r3 = D(r3, s0_1_0, 0x1A320CC9, 0xFEFE0002, 0xFC0C0011, 0x1507FEFA);
	r4 = D(r4, s0_1_0, 0xFDFD2F0C, 0xFA0DFBFC, 0xFB05FFF6, 0x0909FE07);
	r5 = D(r5, s0_1_0, 0xF804FF00, 0x12FE01FF, 0xFD01FD07, 0x13FBFFF5);
	r6 = D(r6, s0_1_0, 0x15DDE9FC, 0x01EEFFEE, 0xFDE4FCFF, 0x04EFF6F3);
	r7 = D(r7, s0_1_0, 0x1602EDE2, 0xF8150E02, 0xF9F30DD8, 0xCD0BED04);
	r0 = D(r0, s0_1_1, 0xD0F2050A, 0x0C00F3D4, 0xDB07F5F5, 0x16E0F306);
	r1 = D(r1, s0_1_1, 0x0BFDF0B7, 0x16FD0AFA, 0xD6F2E281, 0x0020FB95);
	r2 = D(r2, s0_1_1, 0x0D17EB0E, 0x290DF0F0, 0x33E6FB28, 0x17EAC22E);
	r3 = D(r3, s0_1_1, 0x13E917F3, 0xF901FA0C, 0xF4F807DA, 0xD9FC0316);
	r4 = D(r4, s0_1_1, 0xEEFD2405, 0xE50500F9, 0xFEF8FCD2, 0x0B24FEC6);
	r5 = D(r5, s0_1_1, 0x05D8FB1A, 0x04F80A07, 0xFFFF00F0, 0x1209F610);
	r6 = D(r6, s0_1_1, 0x1601FCFE, 0x06EDFCF7, 0xE8EB0A20, 0xFEFCF826);
	r7 = D(r7, s0_1_1, 0xEC70000A, 0x06E9F608, 0x0C201C35, 0xFEE6FDFC);
	r0 = D(r0, s0_1_2, 0xEE17FE02, 0xD8FBFBFF, 0xF20EF309, 0x0303E40E);
	r1 = D(r1, s0_1_2, 0xE5FEFBEE, 0xE807E21A, 0xF00F020D, 0xD20EFDF5);
	r2 = D(r2, s0_1_2, 0xE7040300, 0xFF05FC0C, 0xF31700FC, 0x81F1E002);
	r3 = D(r3, s0_1_2, 0x16FC0502, 0xFF00FEFC, 0xFDE70A07, 0xF60407FB);
	r4 = D(r4, s0_1_2, 0x01FB1D05, 0x02FB020A, 0xFCFAF907, 0x0400FA04);
	r5 = D(r5, s0_1_2, 0x0007FEFC, 0x0A10FCFF, 0x07F404FF, 0xF005FFF7);
	r6 = D(r6, s0_1_2, 0x0403FFFF, 0x0AFFF804, 0x0C07FE03, 0xF804FC00);
	r7 = D(r7, s0_1_2, 0xAEF6ED1F, 0x1EE2EE06, 0x06000601, 0xBAF4FE0B);
	r0 = D(r0, s0_2_0, 0xF408FC1C, 0xF308F718, 0x10FAFDF8, 0xF002DE15);
	r1 = D(r1, s0_2_0, 0xFA12F5F7, 0xFBF6EF06, 0xF1F50C00, 0xEA03F9F0);
	r2 = D(r2, s0_2_0, 0x06030003, 0x12F600FE, 0xE510FFDB, 0xE606F9E6);
	r3 = D(r3, s0_2_0, 0x07F20513, 0xFDFFFF03, 0x0CF6ED1E, 0x0206FE01);
	r4 = D(r4, s0_2_0, 0xF4FC1711, 0xF5FD001B, 0xF501FD00, 0x07F9FC01);
	r5 = D(r5, s0_2_0, 0xFF00040B, 0x05FE070A, 0x01FFF9FE, 0x00FC06F5);
	r6 = D(r6, s0_2_0, 0x01F5F4FA, 0xFE0CEFD3, 0x2A09F3F2, 0x12FFF0EB);
	r7 = D(r7, s0_2_0, 0xF5E7EAEF, 0x0213FF06, 0xF60202E4, 0xDE08F80A);
	r0 = D(r0, s0_2_1, 0xED0EFDFA, 0xE3FBF7CF, 0x0D12EC09, 0xE8FCDEEC);
	r1 = D(r1, s0_2_1, 0xCE24ECC4, 0xC4F6EAFA, 0xFBFA0CF3, 0xE705F3BA);
	r2 = D(r2, s0_2_1, 0xF4EDF8FA, 0x1BF5FEF7, 0xA81005FE, 0x81F81110);
	r3 = D(r3, s0_2_1, 0x0C000EFE, 0xF7FDFF03, 0xEDFFFBE1, 0x0C0A0013);
	r4 = D(r4, s0_2_1, 0xFDE01106, 0xF8020127, 0xEEF1FBF4, 0x19F9EF1B);
	r5 = D(r5, s0_2_1, 0xFB01FE2A, 0x210303FC, 0x00FE00F6, 0x07F4FEEB);
	r6 = D(r6, s0_2_1, 0x0401FFFC, 0xF3EFECC6, 0x291DF222, 0x0302F1F5);
	r7 = D(r7, s0_2_1, 0xD2EDED9E, 0xE304F9FE, 0x061EF6D8, 0xD204020B);
	r0 = D(r0, s0_2_2, 0xF1FE04F9, 0xF6F902F6, 0x0403E7F0, 0xEDEBD602);
	r1 = D(r1, s0_2_2, 0xD80AF20B, 0xE1E6DFF2, 0x11020A01, 0xFE0DF8FF);
	r2 = D(r2, s0_2_2, 0x020700FD, 0x0BFAF607, 0xFDF1F9FC, 0xEA13F1D7);
	r3 = D(r3, s0_2_2, 0x07FC04FF, 0xF8FEFD01, 0xEE030D02, 0xE7000103);
	r4 = D(r4, s0_2_2, 0xF7000EEE, 0x01FA0406, 0x0D0AFCFD, 0x0AFCF501);
	r5 = D(r5, s0_2_2, 0xF701FF0F, 0x07F703F3, 0x04FCFF01, 0xFB01FA02);
	r6 = D(r6, s0_2_2, 0x23F9F91A, 0x0A09F005, 0xF006F200, 0xFB03EE03);
	r7 = D(r7, s0_2_2, 0xB2FDE1E1, 0xFAF4F700, 0x0FFD00D8, 0xD0F00B14);
	r0 = D(r0, s1_0_0, 0xF7F9E4FF, 0x0A00FEFE, 0xF913FFFE, 0x0FFB01EA);
	r1 = D(r1, s1_0_0, 0x10FC0DF9, 0xF9DF15F5, 0xF5F10521, 0x10FA09F2);
	r2 = D(r2, s1_0_0, 0x040804FC, 0xFF070FF0, 0x11FD10EF, 0x0101F5F2);
	r3 = D(r3, s1_0_0, 0xF111FA0D, 0xFFFA04FD, 0xFAFC04FF, 0xFCF9FD08);
	r4 = D(r4, s1_0_0, 0x03FF0408, 0xF7F4FB07, 0xFFE90601, 0x01FDFFFF);
	r5 = D(r5, s1_0_0, 0x02FC00FE, 0x0401F70B, 0xF8FD02FE, 0xFD0906FD);
	r6 = D(r6, s1_0_0, 0xFEEA04FA, 0xFFE30701, 0x09070EF8, 0x01EF0701);
	r7 = D(r7, s1_0_0, 0x1FF6F6DD, 0x06FE07F3, 0x18E8F6F8, 0x010007EE);
	r0 = D(r0, s1_0_1, 0x1802F0E9, 0x17FDF30A, 0x05EEFBFD, 0xD5F7F800);
	r1 = D(r1, s1_0_1, 0x3A00FB14, 0xFEEE0508, 0x0AF5130F, 0xF9170BFE);
	r2 = D(r2, s1_0_1, 0xF20202E7, 0xD9FF0AF7, 0xE9F3F2FD, 0x0BE3E9EF);
	r3 = D(r3, s1_0_1, 0x0106F902, 0x06FE01FA, 0xFD2CFFEC, 0x08F603F8);
	r4 = D(r4, s1_0_1, 0xED0C0AEF, 0xFA04030A, 0x171804E9, 0x1102020E);
	r5 = D(r5, s1_0_1, 0x04FE03F8, 0x0A04EF06, 0x1102FEF6, 0xCE040B01);
	r6 = D(r6, s1_0_1, 0xE6EDFBF7, 0x160E09F1, 0x17D800F4, 0xF8F3000C);
	r7 = D(r7, s1_0_1, 0xECD407DD, 0xEDD818DF, 0x12F5F102, 0xFBE3F6D5);
	r0 = D(r0, s1_0_2, 0x1C0FECE9, 0x15ECF500, 0x140D0EF2, 0x0AF3F6E1);
	r1 = D(r1, s1_0_2, 0x1AFD0300, 0xF4F4FCDE, 0xE9FD0102, 0xF7FB0004);
	r2 = D(r2, s1_0_2, 0x050A1001, 0xF90605FA, 0x05EF010B, 0xEB04C911);
	r3 = D(r3, s1_0_2, 0x0AFFEFFE, 0x06FEFFFE, 0x020CECF3, 0x00030609);
	r4 = D(r4, s1_0_2, 0xEEDFFBF8, 0xF201FB05, 0xFFF5E9EE, 0xF7FF0200);
	r5 = D(r5, s1_0_2, 0x00FB01FB, 0xFBFFF701, 0x00020002, 0x08000406);
	r6 = D(r6, s1_0_2, 0x0A2004EB, 0xFAF802EE, 0xF80305FD, 0xFDF70AF3);
	r7 = D(r7, s1_0_2, 0xFBFA0BD0, 0xEA11FBF9, 0xFBED1007, 0x02FA02FE);
	r0 = D(r0, s1_1_0, 0x16FBE6FD, 0xF5FDFF10, 0xFEF602FB, 0xF4ED00F2);
	r1 = D(r1, s1_1_0, 0xE5F506FB, 0x10020FD6, 0x05010208, 0xECFB0704);
	r2 = D(r2, s1_1_0, 0xE0120200, 0x04EA0003, 0xF50AFFD2, 0xFA28031B);
	r3 = D(r3, s1_1_0, 0x23FBF1EC, 0x14FE04FF, 0x11DEF20F, 0x0CF9FD01);
	r4 = D(r4, s1_1_0, 0xFBED0202, 0x06FF0406, 0x01F90208, 0xFE0B060B);
	r5 = D(r5, s1_1_0, 0x04FD0103, 0xF8060201, 0x020201FD, 0x00010004);
	r6 = D(r6, s1_1_0, 0x1519F2FE, 0x08EC0802, 0x01CB04F7, 0xFFF80AEE);
	r7 = D(r7, s1_1_0, 0x020008D8, 0x10DD08E6, 0x0102FEF4, 0xFD0805F6);
	r0 = D(r0, s1_1_1, 0xFFD9F1F5, 0xF40B0FEE, 0x07F902F8, 0x1EF1F7FD);
	r1 = D(r1, s1_1_1, 0xE3FAFDF1, 0xF0EBF1DC, 0x0D04E315, 0x08F8FEFC);
	r2 = D(r2, s1_1_1, 0x3DD916EA, 0x29F40109, 0x06F5F400, 0x27001DEE);
	r3 = D(r3, s1_1_1, 0x070F09D9, 0xE9FBF900, 0xE6F20DE0, 0xF0F9FCDB);
	r4 = D(r4, s1_1_1, 0x10F0FCEB, 0x15220000, 0xFB1FFFFB, 0x46FA0F1A);
	r5 = D(r5, s1_1_1, 0x53FF05F3, 0x25EBED19, 0x57FAFB01, 0x3702000F);
	r6 = D(r6, s1_1_1, 0x24F601EE, 0xEAE3FE18, 0xEB02F616, 0x25F1060D);
	r7 = D(r7, s1_1_1, 0x81001233, 0xC302F797, 0x813EF80B, 0xF12A06E6);
	r0 = D(r0, s1_1_2, 0x2B08E5FD, 0x06F80904, 0xF8FD0A09, 0x0026F801);
	r1 = D(r1, s1_1_2, 0x09F4F402, 0x23F70FD9, 0x01FC03EE, 0x030202F8);
	r2 = D(r2, s1_1_2, 0x07000807, 0x0CE8F8FE, 0x0B15FB1C, 0xF001B60A);
	r3 = D(r3, s1_1_2, 0xFCF5F9F3, 0xF90300FF, 0xE802FA0B, 0xE8FDF206);
	r4 = D(r4, s1_1_2, 0xF5040FD7, 0x050102FF, 0x0CFCF20E, 0xFE03FEFE);
	r5 = D(r5, s1_1_2, 0x0EFE04FC, 0x1208F6FE, 0xFA03FF01, 0x09020504);
	r6 = D(r6, s1_1_2, 0x01E9FB1E, 0xD6F208E2, 0x0AFFDF16, 0x040900F4);
	r7 = D(r7, s1_1_2, 0x0F09ED07, 0x04F0E8CA, 0x0012DF0A, 0xE9100AE2);
	r0 = D(r0, s1_2_0, 0x100AE702, 0xFDFF0303, 0x01FE01FA, 0x00F6FEF2);
	r1 = D(r1, s1_2_0, 0xF8F505F8, 0x0FFDF4EC, 0xF0FA0E04, 0xFEFF05FA);
	r2 = D(r2, s1_2_0, 0x0A080AF4, 0x0201FA04, 0xFDF5FA0C, 0xDBFAFB00);
	r3 = D(r3, s1_2_0, 0x09FCF90A, 0xFEFD02FC, 0xFC06F20E, 0x02FDFF06);
	r4 = D(r4, s1_2_0, 0x05F80002, 0x04FA0E02, 0xFB070704, 0xFF0401FF);
	r5 = D(r5, s1_2_0, 0x0200FEFD, 0xFB0608FC, 0x02000001, 0xFDFE04FE);
	r6 = D(r6, s1_2_0, 0x0004F8EB, 0xFFFB01DA, 0x04ECFCE8, 0xF8FA01F3);
	r7 = D(r7, s1_2_0, 0x0C09E9FD, 0x160F0F07, 0x030E1D01, 0x0E040602);
	r0 = D(r0, s1_2_1, 0x0312FF06, 0xFC0505FF, 0x0A040306, 0x0D02FD03);
	r1 = D(r1, s1_2_1, 0x110BFCE9, 0xF714FAF9, 0xFFF6010B, 0x040EFC05);
	r2 = D(r2, s1_2_1, 0x01F90500, 0xE90103FC, 0xEBF7FE17, 0x0B36311C);
	r3 = D(r3, s1_2_1, 0xEDE3FC10, 0xFA0104FF, 0x0C1BFE09, 0xF3050310);
	r4 = D(r4, s1_2_1, 0xF1020412, 0x0FF20D03, 0x0312090B, 0x0803F703);
	r5 = D(r5, s1_2_1, 0xF5FDFF00, 0xF9F9080A, 0x02060000, 0xF0F60001);
	r6 = D(r6, s1_2_1, 0x090BF601, 0xCB10F1E4, 0x1008FFDA, 0xF80400F2);
	r7 = D(r7, s1_2_1, 0x3007EB04, 0xF6130512, 0x2FF1F5EE, 0x0700FB0A);
	r0 = D(r0, s1_2_2, 0xFE01F204, 0xFD0DFF10, 0x090606F7, 0x0203EAEF);
	r1 = D(r1, s1_2_2, 0x0D1300FB, 0xFF19FCFF, 0x0CFB000E, 0x1809FAFF);
	r2 = D(r2, s1_2_2, 0xF6FE0AED, 0xFEF7FA01, 0xEEFCFDFD, 0x0A140A2F);
	r3 = D(r3, s1_2_2, 0x0104FAF6, 0x0401FFFE, 0x00F00906, 0xFAFB020D);
	r4 = D(r4, s1_2_2, 0x17EB07F4, 0xFF0700FD, 0x0BFC08FF, 0xF9FBF000);
	r5 = D(r5, s1_2_2, 0x1B02FEFD, 0xECF90802, 0xF7000003, 0x00FE03FC);
	r6 = D(r6, s1_2_2, 0xFE03FD0C, 0x1EFFFBF4, 0x0410040C, 0x0806FDFF);
	r7 = D(r7, s1_2_2, 0x0214DA03, 0xF922EEF6, 0x0FFB0FFD, 0x150F0000);
	f0 = vec4(r0) * 6.2000124e-05;
	f0 += vec4(-2.485e-02, 6.600e-03, 1.120e-02, 8.247e-02);
	f0 = clamp(f0, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 0), f0);
	f1 = vec4(r1) * 6.2000124e-05;
	f1 += vec4(1.705e-02, 4.731e-02, -1.339e-02, 6.410e-03);
	f1 = clamp(f1, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 0), f1);
	f2 = vec4(r2) * 6.2000124e-05;
	f2 += vec4(-7.146e-03, 1.544e-02, -1.918e-03, -3.773e-02);
	f2 = clamp(f2, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 1), f2);
	f3 = vec4(r3) * 6.2000124e-05;
	f3 += vec4(-2.564e-02, 1.089e-02, -2.619e-04, -1.711e-02);
	f3 = clamp(f3, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 1), f3);
	f4 = vec4(r4) * 6.2000124e-05;
	f4 += vec4(5.704e-02, -1.431e-02, 1.035e-02, -4.631e-02);
	f4 = clamp(f4, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 0), f4);
	f5 = vec4(r5) * 6.2000124e-05;
	f5 += vec4(1.669e-02, 2.824e-02, 4.021e-03, 1.570e-02);
	f5 = clamp(f5, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 0), f5);
	f6 = vec4(r6) * 6.2000124e-05;
	f6 += vec4(2.973e-02, 1.557e-02, -2.883e-02, 5.114e-03);
	f6 = clamp(f6, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 1), f6);
	f7 = vec4(r7) * 6.2000124e-05;
	f7 += vec4(1.056e-03, 3.367e-02, -9.452e-02, 1.751e-02);
	f7 = clamp(f7, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 1), f7);
}

//!DESC [CuNNy_8x32_DS_vk] -conv6
//!HOOK LUMA
//!COMPUTE 32 16 8 8
//!BIND conv5
//!BIND LUMA
//!SAVE conv6
//!WIDTH LUMA.w 4 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_spirv_intrinsics : require
spirv_instruction (extensions = ["SPV_KHR_integer_dot_product"], capabilities = [6019, 6018], id = 4450)
int dp4(int a, int b, spirv_literal int fmt);
#define D(r, s, a, b, c, d) r + ivec4(dp4(s, a, 0), dp4(s, b, 0), dp4(s, c, 0), dp4(s, d, 0))
shared int G[8][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(4, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			vec2 p;
			vec4 r, g, b, a;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(1, 1)) * conv5_pt;
			r = conv5_gather(p, 0);
			g = conv5_gather(p, 1);
			b = conv5_gather(p, 2);
			a = conv5_gather(p, 3);
			vec4 v0 = vec4(r.w, g.w, b.w, a.w) * 1.0000000e+00;
			vec4 v1 = vec4(r.z, g.z, b.z, a.z) * 1.0000000e+00;
			vec4 v2 = vec4(r.x, g.x, b.x, a.x) * 1.0000000e+00;
			vec4 v3 = vec4(r.y, g.y, b.y, a.y) * 1.0000000e+00;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(3, 1)) * conv5_pt;
			r = conv5_gather(p, 0);
			g = conv5_gather(p, 1);
			b = conv5_gather(p, 2);
			a = conv5_gather(p, 3);
			vec4 v4 = vec4(r.w, g.w, b.w, a.w) * 1.0000000e+00;
			vec4 v5 = vec4(r.z, g.z, b.z, a.z) * 1.0000000e+00;
			vec4 v6 = vec4(r.x, g.x, b.x, a.x) * 1.0000000e+00;
			vec4 v7 = vec4(r.y, g.y, b.y, a.y) * 1.0000000e+00;
			G[0][ay][ax] = int(packSnorm4x8(v0));
			G[1][ay][ax] = int(packSnorm4x8(v1));
			G[2][ay][ax] = int(packSnorm4x8(v2));
			G[3][ay][ax] = int(packSnorm4x8(v3));
			G[4][ay][ax] = int(packSnorm4x8(v4));
			G[5][ay][ax] = int(packSnorm4x8(v5));
			G[6][ay][ax] = int(packSnorm4x8(v6));
			G[7][ay][ax] = int(packSnorm4x8(v7));
		}
	}
	barrier();
	int s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;
	ivec4 r0, r1, r2, r3, r4, r5, r6, r7;
	vec4 f0, f1, f2, f3, f4, f5, f6, f7;
	r0 = ivec4(0); r1 = ivec4(0); r2 = ivec4(0); r3 = ivec4(0); r4 = ivec4(0); r5 = ivec4(0); r6 = ivec4(0); r7 = ivec4(0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2]; s1_0_0 = G[1][xy.y+0][xy.x+0];
	s1_0_1 = G[1][xy.y+0][xy.x+1]; s1_0_2 = G[1][xy.y+0][xy.x+2];
	s1_1_0 = G[1][xy.y+1][xy.x+0]; s1_1_1 = G[1][xy.y+1][xy.x+1];
	s1_1_2 = G[1][xy.y+1][xy.x+2]; s1_2_0 = G[1][xy.y+2][xy.x+0];
	s1_2_1 = G[1][xy.y+2][xy.x+1]; s1_2_2 = G[1][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xFA0C0A15, 0xF8F7FAF8, 0x02140E01, 0x080007F9);
	r1 = D(r1, s0_0_0, 0xF10006F8, 0x020104FB, 0xF605FA09, 0x05F6F907);
	r2 = D(r2, s0_0_0, 0xF606FEFC, 0x0704FFFE, 0x0AFC0BFB, 0xFF010601);
	r3 = D(r3, s0_0_0, 0xFBFFF405, 0x0006FD04, 0xFEFBFA05, 0x0DF9EE00);
	r4 = D(r4, s0_0_0, 0x01FF01FE, 0x1405E716, 0xFFE307FF, 0x03FEFE03);
	r5 = D(r5, s0_0_0, 0xED8181A1, 0xED0701EE, 0x06FADC0B, 0x08CBF540);
	r6 = D(r6, s0_0_0, 0xF8FD09FD, 0x0202FE01, 0x0A0E0A06, 0xF5FFF809);
	r7 = D(r7, s0_0_0, 0xFA030004, 0xE21A0CEF, 0xE1032EEB, 0xEB18DC0D);
	r0 = D(r0, s0_0_1, 0x15FF00F1, 0x05FFF4FD, 0xE504B9FE, 0xFE02FD08);
	r1 = D(r1, s0_0_1, 0x010FE912, 0xFA08FD03, 0xFE03F8FE, 0x01FAEE04);
	r2 = D(r2, s0_0_1, 0x08F2DCF4, 0x02F9F6FA, 0x0AFC04F2, 0xFFFAFC05);
	r3 = D(r3, s0_0_1, 0x010BD913, 0x020201FE, 0xFB03F70B, 0xFAF3F9EF);
	r4 = D(r4, s0_0_1, 0x02FFFDFE, 0x05F1E214, 0x04E505F1, 0x04FC0601);
	r5 = D(r5, s0_0_1, 0x07EDC7F8, 0xF90AE5FE, 0x060FEE0F, 0xF0020C16);
	r6 = D(r6, s0_0_1, 0xFAF9110C, 0x1202D7FF, 0xFFFC21F1, 0x09F30506);
	r7 = D(r7, s0_0_1, 0x03000204, 0xF90DB509, 0x0AE3F3FC, 0xE115CC27);
	r0 = D(r0, s0_0_2, 0x1BFD12F1, 0xFB06EAF8, 0x0302100F, 0x0204F9F7);
	r1 = D(r1, s0_0_2, 0xF40FD70A, 0x040206FE, 0x02FE0501, 0x0601FE03);
	r2 = D(r2, s0_0_2, 0xFEF51106, 0xFFFA0E01, 0xF90002F3, 0x05FEFC04);
	r3 = D(r3, s0_0_2, 0x05F2ED02, 0x0002FC00, 0xFEFAFC00, 0xF20CE9FD);
	r4 = D(r4, s0_0_2, 0x00FFFEFF, 0x0DFFDE1C, 0x01FAF6FB, 0xFD0101FC);
	r5 = D(r5, s0_0_2, 0xF618F2F9, 0x0806F9FE, 0xFDFA15FD, 0x35E60314);
	r6 = D(r6, s0_0_2, 0x03FFE809, 0xF004A319, 0x10FB06FF, 0xFEFC04FD);
	r7 = D(r7, s0_0_2, 0xF8FD020F, 0x110F0AF0, 0x0D13A307, 0xDE13D80A);
	r0 = D(r0, s0_1_0, 0x05C3F1FC, 0xFDF304FC, 0xF6F4D114, 0xFA06FC0B);
	r1 = D(r1, s0_1_0, 0xFB0EF513, 0xF9FEFD07, 0xF702080D, 0x000506FA);
	r2 = D(r2, s0_1_0, 0xFFF20910, 0xEF1708FC, 0x010C0402, 0xF90C0E04);
	r3 = D(r3, s0_1_0, 0xFD050209, 0x07FE01F4, 0xFFFEFAF5, 0xFB0F0FFA);
	r4 = D(r4, s0_1_0, 0x01FFFE01, 0x140F1010, 0x08E8F40A, 0x04FE0002);
	r5 = D(r5, s0_1_0, 0xFCFA0209, 0xEF01220E, 0xFA0005F1, 0x03F7F714);
	r6 = D(r6, s0_1_0, 0xF2FD00FF, 0xF9F1FCFE, 0xFC0C0B0B, 0x00FBFD0C);
	r7 = D(r7, s0_1_0, 0xF40D050B, 0xF800110B, 0x15BE0506, 0xFF02FEF2);
	r0 = D(r0, s0_1_1, 0x04FBEE14, 0xFAFEEC08, 0x3414D900, 0xFBE5FE21);
	r1 = D(r1, s0_1_1, 0x0FF6E6F7, 0x0CFEEFFF, 0xFF0DFE07, 0x08FCF706);
	r2 = D(r2, s0_1_1, 0xF3151103, 0xF7EEF10D, 0x02FF01F6, 0xF2FF0018);
	r3 = D(r3, s0_1_1, 0xF9E2D2F5, 0xF5FDF0FD, 0x05F7F404, 0xE8140611);
	r4 = D(r4, s0_1_1, 0x01FBFCF8, 0xF815F700, 0xE8081203, 0xFF0E0302);
	r5 = D(r5, s0_1_1, 0xF2F32C04, 0x0C18F507, 0x0ADD07F6, 0xF0B2FEF8);
	r6 = D(r6, s0_1_1, 0x06F2EE1D, 0xF730FD12, 0xE5250F1E, 0x040DFFF5);
	r7 = D(r7, s0_1_1, 0xFB14020A, 0xF9100306, 0xFEF50BEE, 0x2A1436F0);
	r0 = D(r0, s0_1_2, 0x0800EF02, 0xF40BFE06, 0x08E904FF, 0x03040302);
	r1 = D(r1, s0_1_2, 0xE4150BF7, 0xFB0703FE, 0xFF02FE05, 0xFC020000);
	r2 = D(r2, s0_1_2, 0x17F9FCF9, 0x050201F1, 0x02FBFBFF, 0xFC0301FA);
	r3 = D(r3, s0_1_2, 0x0813F9F1, 0x0201F804, 0x050305FE, 0xFB06070B);
	r4 = D(r4, s0_1_2, 0x0100FFFE, 0x1013100A, 0xDDFB1412, 0xFF00FC01);
	r5 = D(r5, s0_1_2, 0x0BFC0C0C, 0xEE10F7FB, 0x05FBF208, 0xEF22E618);
	r6 = D(r6, s0_1_2, 0xFCFF00F6, 0xF002E881, 0xFA29CC1C, 0xF606FD03);
	r7 = D(r7, s0_1_2, 0xFFF90805, 0xF21104F9, 0xEB120A06, 0xECE4251A);
	r0 = D(r0, s0_2_0, 0x35091704, 0x01F6F8F5, 0xEAF012F3, 0xFC080201);
	r1 = D(r1, s0_2_0, 0xE60CFCF1, 0x03020603, 0x03FAFD02, 0x01050003);
	r2 = D(r2, s0_2_0, 0x0406050A, 0x01FF0501, 0x07FAFFF9, 0x00FFFC03);
	r3 = D(r3, s0_2_0, 0x1A070508, 0x0410000C, 0xFE0104FF, 0xF6FFFE0A);
	r4 = D(r4, s0_2_0, 0x01FE00FF, 0x0528E70D, 0x08E107EE, 0x0505FFFD);
	r5 = D(r5, s0_2_0, 0x15F6FF04, 0x05E90E0F, 0x02F4F604, 0x0212F132);
	r6 = D(r6, s0_2_0, 0x08FAFF0B, 0xF9030B04, 0x0DFB08FE, 0x00FB0404);
	r7 = D(r7, s0_2_0, 0x0200000A, 0xF9FBF704, 0x020CF600, 0xB3FED60F);
	r0 = D(r0, s0_2_1, 0xFA24F5E3, 0xFDEFEB04, 0xF6F041F4, 0x0C0DF60B);
	r1 = D(r1, s0_2_1, 0xEDF7F600, 0x030A0C04, 0x00FF07F7, 0x02FAEE04);
	r2 = D(r2, s0_2_1, 0x01E9F40E, 0xF90B11FC, 0x0304F3FF, 0x00F71001);
	r3 = D(r3, s0_2_1, 0x06E1CAFA, 0xFCF8EA0B, 0xFBFC0405, 0x05F3F203);
	r4 = D(r4, s0_2_1, 0x0301FD00, 0xF509F616, 0x0ADC0708, 0x01FBFA06);
	r5 = D(r5, s0_2_1, 0x03FC0404, 0x09FDFF00, 0xFD0BF3F3, 0x0DDA02FF);
	r6 = D(r6, s0_2_1, 0xFB03FDEE, 0x0107F11F, 0x04BD97F6, 0xFB01FFFE);
	r7 = D(r7, s0_2_1, 0x020BED0E, 0xEC211EEC, 0xF40111FD, 0xE10CF91B);
	r0 = D(r0, s0_2_2, 0x0113FDEB, 0xF90BF7FF, 0xEBF80305, 0x021003F4);
	r1 = D(r1, s0_2_2, 0xF8F2FB12, 0xFB04FFFD, 0x01F70502, 0x07FE0401);
	r2 = D(r2, s0_2_2, 0x02F90B02, 0x05FFFDFF, 0xFC02FBF3, 0x06040104);
	r3 = D(r3, s0_2_2, 0x01F7F7F9, 0xF8FBFC0B, 0xFC000100, 0x020301FB);
	r4 = D(r4, s0_2_2, 0x0103FFFC, 0xEF12F819, 0x09F9F601, 0x03FFFEFF);
	r5 = D(r5, s0_2_2, 0x00FB0106, 0x06F51DF4, 0xFEFD13FA, 0x1FFE1E32);
	r6 = D(r6, s0_2_2, 0x02EF03FD, 0xEC0DEA17, 0x1313F904, 0x00FCFA04);
	r7 = D(r7, s0_2_2, 0xF5FB0209, 0xD8020905, 0x03F13416, 0xC5C605E6);
	r0 = D(r0, s1_0_0, 0x16F2F803, 0x0100FF06, 0x02F80B0B, 0xF7F50701);
	r1 = D(r1, s1_0_0, 0xFC0A0213, 0x090304F6, 0x0AF7FAFE, 0x01000201);
	r2 = D(r2, s1_0_0, 0xFAFDF50A, 0x080203FE, 0xF7FEFF02, 0xF9FFFE04);
	r3 = D(r3, s1_0_0, 0x2F050002, 0x0703FB08, 0x07FA04F8, 0x030B01F4);
	r4 = D(r4, s1_0_0, 0x0100FFFF, 0xF7DB0015, 0x1704F9FF, 0xFEFDFF00);
	r5 = D(r5, s1_0_0, 0x818181B1, 0xF8FADDF2, 0x1FEFFBF6, 0x0BCB0C14);
	r6 = D(r6, s1_0_0, 0xF0020003, 0x0203F907, 0xEF0C03FD, 0x01F500FD);
	r7 = D(r7, s1_0_0, 0xF0FF0506, 0xE80FFC0F, 0xFFEF01D5, 0xEF0E00FE);
	r0 = D(r0, s1_0_1, 0xF00B160F, 0x16FEFDE8, 0xD9E3F8FE, 0x07FB02FF);
	r1 = D(r1, s1_0_1, 0xEDF9F7ED, 0xFC040305, 0xFD00F912, 0x090301F7);
	r2 = D(r2, s1_0_1, 0xFB00F907, 0x0602F30E, 0xEC060707, 0x0A02FCFA);
	r3 = D(r3, s1_0_1, 0xF0F7FCDE, 0xFEFF01FD, 0xFFE3F505, 0x0F08F6EA);
	r4 = D(r4, s1_0_1, 0x0401FFFF, 0xFBEFE810, 0xF803E3F6, 0xF005FF05);
	r5 = D(r5, s1_0_1, 0x28EAD4F0, 0x0C07D3FF, 0xFAFBF40D, 0x1CF00B14);
	r6 = D(r6, s1_0_1, 0x0BFE06E7, 0x16FE0402, 0xEE11EAC9, 0xFBFF0811);
	r7 = D(r7, s1_0_1, 0xEA080DFE, 0x22E3F002, 0x34E003F1, 0x11EA09E1);
	r0 = D(r0, s1_0_2, 0x00051CFA, 0x0305FB09, 0xEF07F729, 0xF7000901);
	r1 = D(r1, s1_0_2, 0x14FAF7F8, 0xFF0306FD, 0xFAFEF803, 0x02FDFB01);
	r2 = D(r2, s1_0_2, 0x0006EAED, 0x00FC0AF8, 0x000800FB, 0x07FFFB05);
	r3 = D(r3, s1_0_2, 0x111EE314, 0x07FE0306, 0xFF0FFA06, 0xF605F50E);
	r4 = D(r4, s1_0_2, 0x00010200, 0xFAEFD913, 0xFF01EE05, 0x07FEFDFF);
	r5 = D(r5, s1_0_2, 0xF0FEDC1F, 0x0605F70D, 0xF6FD08FB, 0x03EAE70F);
	r6 = D(r6, s1_0_2, 0x10FEFDF1, 0x20E4FBF5, 0xF108F725, 0xF80406FB);
	r7 = D(r7, s1_0_2, 0xFD05F9FD, 0x0DFE0407, 0x09E6E61A, 0xF4EEDDFA);
	r0 = D(r0, s1_1_0, 0x1030F4EC, 0x02FC0107, 0xFFB5F70F, 0x0A010003);
	r1 = D(r1, s1_1_0, 0x06F20905, 0x0017F8FF, 0x0DEC00FB, 0xF0FF03FE);
	r2 = D(r2, s1_1_0, 0x06F9F1FE, 0xFEF4FFFB, 0xFB090503, 0xFCFCFA03);
	r3 = D(r3, s1_1_0, 0xE7C20409, 0x0208FBFE, 0xFB03F807, 0xEE0302EF);
	r4 = D(r4, s1_1_0, 0x03000002, 0x09F41110, 0xF306FD08, 0x02020002);
	r5 = D(r5, s1_1_0, 0x18C4EB08, 0xF8E7EAFB, 0x00FBF4FC, 0x06F5FCF7);
	r6 = D(r6, s1_1_0, 0x081107FE, 0xF9FD02FB, 0x060300F9, 0x1606FFFF);
	r7 = D(r7, s1_1_0, 0x071402F8, 0xE113FB01, 0xF1D50700, 0x240AF10A);
	r0 = D(r0, s1_1_1, 0xEFF60AFC, 0x15F3FC03, 0xEA9BF91D, 0xFF0DFC0C);
	r1 = D(r1, s1_1_1, 0xDEDE03D9, 0xF61F1408, 0xF2F8FE0B, 0x0EEE06F8);
	r2 = D(r2, s1_1_1, 0xFADD020D, 0x04DBEBEE, 0xFBFE0407, 0x12EAFDFF);
	r3 = D(r3, s1_1_1, 0xFEBB0202, 0x03FE00F5, 0x07FDFCED, 0xDAE2F7F9);
	r4 = D(r4, s1_1_1, 0x0107FD01, 0x0BE8EC14, 0x0BE6F90F, 0xFCFF0500);
	r5 = D(r5, s1_1_1, 0xF0D706D5, 0x0C17EA03, 0xFAEDF1F0, 0xFE8107FD);
	r6 = D(r6, s1_1_1, 0x16F304FF, 0x0BC60D06, 0x04BF1EDD, 0x00030D0F);
	r7 = D(r7, s1_1_1, 0x11300006, 0x0BDCB82A, 0x03D51D1B, 0xF2D7EAE2);
	r0 = D(r0, s1_1_2, 0xF9F013FE, 0x01F9F7FD, 0x0BCDF102, 0x02040CFC);
	r1 = D(r1, s1_1_2, 0xEC010402, 0x0A0707FD, 0xFF01FB09, 0xF9010001);
	r2 = D(r2, s1_1_2, 0x020AF30A, 0xFBFE0E04, 0xFF02FF00, 0x06FFFAF9);
	r3 = D(r3, s1_1_2, 0xEAE7D505, 0x0204EF0A, 0x000104FF, 0x15FCFCFD);
	r4 = D(r4, s1_1_2, 0x02FF00FF, 0x28FFF7FF, 0xFAFD0900, 0xFC0500FD);
	r5 = D(r5, s1_1_2, 0xEAF1FB0A, 0x030BE6F2, 0x08F2F510, 0x0905FBEE);
	r6 = D(r6, s1_1_2, 0x110303FF, 0xFDE0E601, 0xFBF8D903, 0x00040A02);
	r7 = D(r7, s1_1_2, 0x06090400, 0x01F9EEFA, 0xFAB9DBEB, 0x14E2F80D);
	r0 = D(r0, s1_2_0, 0xBBEE0123, 0xFB04FA0A, 0x14F4C7D7, 0xF7FE08FC);
	r1 = D(r1, s1_2_0, 0xFC0CFFDB, 0x0911FBFF, 0xEEFBF708, 0xFF040200);
	r2 = D(r2, s1_2_0, 0xFF0AFE01, 0x0AF8F9F0, 0x07080705, 0x0E00FAFC);
	r3 = D(r3, s1_2_0, 0xDDEAE60A, 0xC8DB0503, 0xFB01FD0B, 0xEEF507DA);
	r4 = D(r4, s1_2_0, 0xFE010102, 0x04F2FAF8, 0xF6FEFAF9, 0xFF02FEFF);
	r5 = D(r5, s1_2_0, 0x0008FC02, 0xE6F01E2A, 0x030BFF02, 0xFBDEF0E5);
	r6 = D(r6, s1_2_0, 0xFBFE0A01, 0xF000F407, 0xE5F6F3F4, 0xE8FB0300);
	r7 = D(r7, s1_2_0, 0x06040AFE, 0x15F2EFFE, 0xE3D9F84C, 0xF20CF3F3);
	r0 = D(r0, s1_2_1, 0x0DF5FE11, 0xDDFBFD0F, 0xE6EED2B3, 0xE503FC1C);
	r1 = D(r1, s1_2_1, 0x210EFDA4, 0x1309FFE9, 0x17FC01EB, 0x1DFFFEE4);
	r2 = D(r2, s1_2_1, 0xE8F9FFF7, 0xECEE0108, 0x11050402, 0xED0302F1);
	r3 = D(r3, s1_2_1, 0xA1C0F5E7, 0x81E0F600, 0xEC0602FE, 0xE2010DFC);
	r4 = D(r4, s1_2_1, 0xF902FF05, 0xEEEDFDF9, 0xEDECF808, 0x130301FC);
	r5 = D(r5, s1_2_1, 0x00FD00FE, 0xF1E50AF5, 0x140AFFCF, 0xE2BFF710);
	r6 = D(r6, s1_2_1, 0x11F90EE0, 0x1103F2ED, 0x32D90981, 0x060907FF);
	r7 = D(r7, s1_2_1, 0x250C11F3, 0x1E04EDD6, 0xB1F1D1D1, 0xFA0B04EA);
	r0 = D(r0, s1_2_2, 0x0EFA0E01, 0xFFFCFEF9, 0x03FE0B17, 0xFEFD03FC);
	r1 = D(r1, s1_2_2, 0xE20009FD, 0xFD07FC08, 0x07F9FEFF, 0x04FD03FB);
	r2 = D(r2, s1_2_2, 0xFF01F8E2, 0x0AFC0211, 0x01FB0403, 0xF604FF09);
	r3 = D(r3, s1_2_2, 0xF8FE1303, 0xF7F800FD, 0xFF010504, 0xFD07FF08);
	r4 = D(r4, s1_2_2, 0x00FF0103, 0xE4FAE9EF, 0xF3FF0813, 0x020301FD);
	r5 = D(r5, s1_2_2, 0x00040907, 0xDCFF1FFA, 0xDB0100F5, 0xC9C1F6F5);
	r6 = D(r6, s1_2_2, 0x110C04DB, 0xE2CBE7E5, 0x0AF80AB8, 0x06FF04FA);
	r7 = D(r7, s1_2_2, 0x0200FDF8, 0xF300E4EF, 0xF2F513F5, 0xFAF4C7D4);
	s0_0_0 = G[2][xy.y+0][xy.x+0]; s0_0_1 = G[2][xy.y+0][xy.x+1];
	s0_0_2 = G[2][xy.y+0][xy.x+2]; s0_1_0 = G[2][xy.y+1][xy.x+0];
	s0_1_1 = G[2][xy.y+1][xy.x+1]; s0_1_2 = G[2][xy.y+1][xy.x+2];
	s0_2_0 = G[2][xy.y+2][xy.x+0]; s0_2_1 = G[2][xy.y+2][xy.x+1];
	s0_2_2 = G[2][xy.y+2][xy.x+2]; s1_0_0 = G[3][xy.y+0][xy.x+0];
	s1_0_1 = G[3][xy.y+0][xy.x+1]; s1_0_2 = G[3][xy.y+0][xy.x+2];
	s1_1_0 = G[3][xy.y+1][xy.x+0]; s1_1_1 = G[3][xy.y+1][xy.x+1];
	s1_1_2 = G[3][xy.y+1][xy.x+2]; s1_2_0 = G[3][xy.y+2][xy.x+0];
	s1_2_1 = G[3][xy.y+2][xy.x+1]; s1_2_2 = G[3][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xEC04FFD0, 0x01FF06F7, 0x410303EE, 0xF9F4050F);
	r1 = D(r1, s0_0_0, 0xE4FD0C0E, 0xFB05FAF5, 0xFD00FDFA, 0xFB03FBF8);
	r2 = D(r2, s0_0_0, 0xF4F9F405, 0x0606FE0C, 0xF20005FD, 0x04030209);
	r3 = D(r3, s0_0_0, 0xFAFEF51E, 0x07FAF8F7, 0xEF0401FC, 0xFEFEF8F6);
	r4 = D(r4, s0_0_0, 0xFA00FFFD, 0xF0EC0C0F, 0x1708F9F3, 0x01FFFCF6);
	r5 = D(r5, s0_0_0, 0x428166D2, 0x0102EA03, 0xF00BF5F1, 0xE51412F1);
	r6 = D(r6, s0_0_0, 0x08000604, 0x0505FBF7, 0x0904F104, 0xF5FF01FC);
	r7 = D(r7, s0_0_0, 0x0A040E01, 0x13140800, 0xF7E50910, 0x0DEC14F6);
	r0 = D(r0, s0_0_1, 0x0D0CF5F8, 0xF30CFDEC, 0xDE090ECF, 0xE40002DE);
	r1 = D(r1, s0_0_1, 0x030013D7, 0xFFFDFCF7, 0x03F6FF08, 0xF901FBF2);
	r2 = D(r2, s0_0_1, 0xF1FA0C10, 0x10F5FC08, 0x12FEFF09, 0x01FE0502);
	r3 = D(r3, s0_0_1, 0xFA0900FD, 0xF904F8FD, 0x0807EFF5, 0xE501F51D);
	r4 = D(r4, s0_0_1, 0x0402F9F6, 0xE7F40D07, 0xFE100427, 0x00000707);
	r5 = D(r5, s0_0_1, 0x270A10F0, 0x010F05FD, 0x0B05F2FF, 0xD5FFEDE6);
	r6 = D(r6, s0_0_1, 0xE7F80801, 0x2C06F5E5, 0xEB050514, 0xD60803FA);
	r7 = D(r7, s0_0_1, 0xDD02F9F7, 0xF2E21BE6, 0x12F4E911, 0xECF6F411);
	r0 = D(r0, s0_0_2, 0x03FBFEF5, 0x0B0204FC, 0x0F1AEBFB, 0x0A01FDF4);
	r1 = D(r1, s0_0_2, 0x0A18FBF9, 0xFB01F3FF, 0xFEFA08F9, 0x07FF0108);
	r2 = D(r2, s0_0_2, 0xFCF801FA, 0xF8020008, 0xF701FBF4, 0x03020600);
	r3 = D(r3, s0_0_2, 0x1F0DF8F8, 0xFB02FAFF, 0x060AF0F1, 0xFBF10D00);
	r4 = D(r4, s0_0_2, 0x0003FCFD, 0xF8EE1403, 0x05EAFB09, 0x04FA0006);
	r5 = D(r5, s0_0_2, 0x1CDAFF0D, 0x090DF70E, 0x0007FF05, 0x150D0ADD);
	r6 = D(r6, s0_0_2, 0xEF07FC10, 0xE611EF81, 0x1FEBFF08, 0xFFF913D4);
	r7 = D(r7, s0_0_2, 0xFCFFFCEF, 0xFB0AFB00, 0xEE0A09FF, 0x3FB61FD5);
	r0 = D(r0, s0_1_0, 0xFF1DA3FF, 0x0301FD02, 0xCB041FFC, 0xFE040C04);
	r1 = D(r1, s0_1_0, 0xEE0EFCFA, 0x06070109, 0x0202FFFA, 0xF7030CFF);
	r2 = D(r2, s0_1_0, 0xFA03F8E8, 0x07021814, 0x04FC0206, 0xFDFE0608);
	r3 = D(r3, s0_1_0, 0xCD081503, 0x0F00F10D, 0xE70504FC, 0xF3FB151D);
	r4 = D(r4, s0_1_0, 0xFD02F9F9, 0xEBFCF2E9, 0x0A04E5FB, 0xF90300F8);
	r5 = D(r5, s0_1_0, 0x10F60314, 0xF9FFEADB, 0xFD04FF0D, 0xF80AD2AF);
	r6 = D(r6, s0_1_0, 0xF9FF150D, 0x0DFFFAF0, 0x0FE8FEFF, 0x0706EADF);
	r7 = D(r7, s0_1_0, 0x07010609, 0x0E03180E, 0x070AEFF8, 0x1FF1F911);
	r0 = D(r0, s0_1_1, 0xFF000C33, 0xF922E3D6, 0x05EB05C9, 0x0F15BED9);
	r1 = D(r1, s0_1_1, 0xFBFF0D2C, 0x04E50B04, 0xFBF30A0C, 0xFDF510FA);
	r2 = D(r2, s0_1_1, 0xF3FE07F6, 0x02FD0313, 0x0C06070B, 0xFEF10F12);
	r3 = D(r3, s0_1_1, 0x1E1A0CEF, 0x02ED0810, 0x06080BFE, 0xE0F62212);
	r4 = D(r4, s0_1_1, 0x0208F5FD, 0xEF0CE505, 0xECF1F9F0, 0xFFFA12F1);
	r5 = D(r5, s0_1_1, 0x18FB02FA, 0xFEF4F413, 0xFFDF01FB, 0xFC0681FC);
	r6 = D(r6, s0_1_1, 0xF711E90E, 0x210C230C, 0xF5000310, 0xDB0B08E5);
	r7 = D(r7, s0_1_1, 0xF0FF16C8, 0x00E4E5F2, 0xF4250F04, 0xFDDF1B10);
	r0 = D(r0, s0_1_2, 0xF50AEAF6, 0x0219010F, 0xF4FAED0C, 0x02150B06);
	r1 = D(r1, s0_1_2, 0xE9DE1EF3, 0x03F0040B, 0x02FFFAFF, 0xFDFA0EF6);
	r2 = D(r2, s0_1_2, 0xEFDEE8ED, 0x010C06F7, 0x0702EEFC, 0x03FF0106);
	r3 = D(r3, s0_1_2, 0x0306E304, 0x06EE13FA, 0x03F8E9FB, 0xFC041306);
	r4 = D(r4, s0_1_2, 0x03050103, 0xFCF9FB04, 0xFEEAFA10, 0x0000F708);
	r5 = D(r5, s0_1_2, 0x00FB0008, 0x08CC0202, 0xF709FD0E, 0x0A1810F7);
	r6 = D(r6, s0_1_2, 0xE8EF13FA, 0x031FC8E0, 0xFDD0F634, 0xF7FEF3E5);
	r7 = D(r7, s0_1_2, 0xFC07E7E1, 0xFB0C0C17, 0x14E7E82B, 0x17EF3402);
	r0 = D(r0, s0_2_0, 0xE008310F, 0xFF05FFFE, 0x410AFBF6, 0xF5FCECF6);
	r1 = D(r1, s0_2_0, 0x08F91204, 0x10FC0305, 0xFEFE07FB, 0xFCFF0109);
	r2 = D(r2, s0_2_0, 0xFCFE02FD, 0x0802F812, 0x0AFCF4F6, 0x00FE080D);
	r3 = D(r3, s0_2_0, 0x161000F5, 0xECFF1AEF, 0x0104FFFD, 0xDF031B0E);
	r4 = D(r4, s0_2_0, 0xFD01FCFC, 0xDFF70B0E, 0x110FEC19, 0xFB0000FB);
	r5 = D(r5, s0_2_0, 0x110EF3FC, 0xE7F204FC, 0x0408FD09, 0xCD1409B0);
	r6 = D(r6, s0_2_0, 0xEE00EB10, 0x0B0AF3FA, 0xEAD82029, 0xED0404F9);
	r7 = D(r7, s0_2_0, 0xFF060400, 0x080019E1, 0xEE18F308, 0x0DEB0CF1);
	r0 = D(r0, s0_2_1, 0xFB171AE6, 0xE4100BF0, 0x0BF9F3DC, 0xE0031002);
	r1 = D(r1, s0_2_1, 0x08F8EBD1, 0x10F3EFFA, 0x0AFEF203, 0xFB00FBFA);
	r2 = D(r2, s0_2_1, 0xF407160B, 0x04F21404, 0xF802F7F9, 0x01F5040D);
	r3 = D(r3, s0_2_1, 0xE8010B1A, 0xF40A131F, 0x0702F9FD, 0x0408260B);
	r4 = D(r4, s0_2_1, 0xFD030400, 0xF5080C0B, 0xE0FCFF10, 0x00020200);
	r5 = D(r5, s0_2_1, 0x1C0D16FF, 0x02F52510, 0xFA02E0F2, 0xC10F15E5);
	r6 = D(r6, s0_2_1, 0xF50B0615, 0x11022710, 0x14B8E7EE, 0xD90612F5);
	r7 = D(r7, s0_2_1, 0xDDFDDCE0, 0xF7009EE9, 0x3B001623, 0xFEE6DE13);
	r0 = D(r0, s0_2_2, 0xFFFAE8F5, 0x090A18FC, 0xEBE2F819, 0x06FF0000);
	r1 = D(r1, s0_2_2, 0xD9FA060F, 0x05EEFA0C, 0xFE05F1FC, 0x0001F800);
	r2 = D(r2, s0_2_2, 0xFB060A02, 0xFC0202F9, 0x07FFFD06, 0x00011402);
	r3 = D(r3, s0_2_2, 0x2C0D35F5, 0x040916FC, 0x01FEFBFC, 0xFB08FAF8);
	r4 = D(r4, s0_2_2, 0x02020601, 0xEE0F0800, 0x031016FB, 0x07FD0200);
	r5 = D(r5, s0_2_2, 0x08040C05, 0xF5FCECFB, 0xFAF3E906, 0xFEF02DE1);
	r6 = D(r6, s0_2_2, 0xE5FCF3FF, 0x050DC4B7, 0xE1CA49F7, 0x01040103);
	r7 = D(r7, s0_2_2, 0xFA0AF400, 0x0EF226F7, 0xF3D4F03C, 0x32D72309);
	r0 = D(r0, s1_0_0, 0xF4DF1E00, 0x07FD09FE, 0x22DB11F7, 0xF4FE0603);
	r1 = D(r1, s1_0_0, 0x0AFB06FE, 0x0800FA04, 0xFE04F201, 0xFA030200);
	r2 = D(r2, s1_0_0, 0xF00EFB05, 0x000BFFFD, 0x02FBFFFB, 0xFB05FD05);
	r3 = D(r3, s1_0_0, 0xF91BFE16, 0x02F7FE07, 0x08040306, 0xFCFB00FF);
	r4 = D(r4, s1_0_0, 0xFCFE05FF, 0xDCD121D4, 0x0E00F906, 0x09FFFBFF);
	r5 = D(r5, s1_0_0, 0x8196811A, 0xF017F7F9, 0xF11CFDFF, 0xE2FBE625);
	r6 = D(r6, s1_0_0, 0xF1060102, 0x1504F3FD, 0xF204F20F, 0xFEEFFC03);
	r7 = D(r7, s1_0_0, 0x13F40000, 0x0CF501F4, 0xED1BE5FC, 0xFED21FD6);
	r0 = D(r0, s1_0_1, 0xF61DFEEB, 0x0C040201, 0x11FC07F9, 0xFDE80DFD);
	r1 = D(r1, s1_0_1, 0x0BE303FE, 0x07EFFBFA, 0x0708E7FF, 0xFB020301);
	r2 = D(r2, s1_0_1, 0xDE180906, 0x07FAFE00, 0xF100FE04, 0x040409FB);
	r3 = D(r3, s1_0_1, 0x1FF50CFC, 0x07F707F2, 0xFD031703, 0xF311FFF4);
	r4 = D(r4, s1_0_1, 0x01FC0DFF, 0x0DE3F5CA, 0x1303F5F6, 0xF808F5FD);
	r5 = D(r5, s1_0_1, 0xDF2DDFD4, 0x000CF5EF, 0xFDF2EB05, 0xF1F0041E);
	r6 = D(r6, s1_0_1, 0xFEF4FB03, 0xF71707F6, 0xF0FFF5F5, 0xEB00FCF9);
	r7 = D(r7, s1_0_1, 0xE7000DF8, 0xF11710F6, 0x0FE01319, 0x0A02F5FC);
	r0 = D(r0, s1_0_2, 0x06F711CA, 0x0C0AFB02, 0x0508F70A, 0xF71D0BF7);
	r1 = D(r1, s1_0_2, 0xF5F810F7, 0x00FD02FD, 0xFEFD00F8, 0xF4020803);
	r2 = D(r2, s1_0_2, 0x01FDFBF8, 0xFB0A05F6, 0x0101FFF7, 0x04000207);
	r3 = D(r3, s1_0_2, 0xFC0CEE03, 0x0AF605F8, 0x10FE00FD, 0xFE030200);
	r4 = D(r4, s1_0_2, 0xFCFF0AFE, 0x04DAFEE5, 0x05EF27F1, 0xF8010500);
	r5 = D(r5, s1_0_2, 0x030CFFD5, 0xF7FF01ED, 0xF208FC08, 0xE01B050E);
	r6 = D(r6, s1_0_2, 0xFCF80105, 0x2DE0E581, 0xFDF8FAEF, 0xD9FE0605);
	r7 = D(r7, s1_0_2, 0xFFF5FBFD, 0x1B1FE5F7, 0x0210F7D6, 0x1A09E6E2);
	r0 = D(r0, s1_1_0, 0x21169EF8, 0x040306FF, 0x0000E7F4, 0x050807FB);
	r1 = D(r1, s1_1_0, 0xF2F5FA03, 0x0603FFFA, 0x0210FCFC, 0xF7F80C05);
	r2 = D(r2, s1_1_0, 0x0F0BFCFA, 0xFCF7FEFC, 0xF2F81200, 0xF600F701);
	r3 = D(r3, s1_1_0, 0x2C15E207, 0xDA0F0808, 0x07FFFC03, 0xD7F9090B);
	r4 = D(r4, s1_1_0, 0x0003FDFF, 0x0DEC2FCA, 0x28DB00ED, 0xFF03FDFF);
	r5 = D(r5, s1_1_0, 0x07F8FFE8, 0x0D08F5F9, 0xDCFF0E00, 0x17080516);
	r6 = D(r6, s1_1_0, 0xFA080104, 0x0F02FE04, 0xECF00403, 0x0C12F1FF);
	r7 = D(r7, s1_1_0, 0x08EC0400, 0x0CF8F2FE, 0x0D1F0201, 0xD6E423E5);
	r0 = D(r0, s1_1_1, 0x81DB3F17, 0x2C0B1B03, 0xE801D303, 0xD7F0C6EF);
	r1 = D(r1, s1_1_1, 0xF512EEF6, 0xF714F9F7, 0x2911E1F3, 0xF1F71902);
	r2 = D(r2, s1_1_1, 0x1A20D8F5, 0xFFF645FD, 0xE1FE75FB, 0x0F05470D);
	r3 = D(r3, s1_1_1, 0xF1F0E31B, 0x1217FFEB, 0xFCF2E1FD, 0x17D131FB);
	r4 = D(r4, s1_1_1, 0x0108E9FD, 0x04F8FEEE, 0x3902EEFA, 0xECED0002);
	r5 = D(r5, s1_1_1, 0x1F017E09, 0x041506F1, 0xF50E2BF3, 0x200F1209);
	r6 = D(r6, s1_1_1, 0x00E6FAFD, 0xCCFB0400, 0xF81533E8, 0xDCF9B9FA);
	r7 = D(r7, s1_1_1, 0xA6C6D102, 0x001811FC, 0x00FBD711, 0x0817F8F0);
	r0 = D(r0, s1_1_2, 0xF5F808E8, 0xEFF7EC08, 0xE31305DA, 0xC3F0000D);
	r1 = D(r1, s1_1_2, 0x231CCEE4, 0xF4FB0AF3, 0x0E03E9F4, 0x00070308);
	r2 = D(r2, s1_1_2, 0x1D15DED5, 0x0C11E201, 0x0BF9F2F5, 0xF7F60F00);
	r3 = D(r3, s1_1_2, 0xEF21FCC5, 0x0A0501F0, 0x1400EAF8, 0xF8EE07FD);
	r4 = D(r4, s1_1_2, 0xF5FA2CFE, 0x07E430FE, 0xF2E9F7E9, 0x0606F305);
	r5 = D(r5, s1_1_2, 0xF207F7E7, 0xEF060AE1, 0xDE110AF5, 0xA4E3F01D);
	r6 = D(r6, s1_1_2, 0x1B0BED0D, 0xB3E9A681, 0x25E52DE3, 0xF2FADC06);
	r7 = D(r7, s1_1_2, 0x1CFFF80D, 0xC8EA17FB, 0xE6002CE3, 0xF60EEFF4);
	r0 = D(r0, s1_2_0, 0xFD1310F2, 0x08010400, 0x14EF10EE, 0xFD000BFF);
	r1 = D(r1, s1_2_0, 0x05020001, 0x120CF901, 0xFD020002, 0xFC06FAFF);
	r2 = D(r2, s1_2_0, 0x00F6FF04, 0x05F60CFD, 0x0005F600, 0xFCFA0307);
	r3 = D(r3, s1_2_0, 0x1201EEEF, 0x130AF5FA, 0xFE020200, 0xF719020B);
	r4 = D(r4, s1_2_0, 0x000102FF, 0xE7E001CE, 0xF9E9F107, 0x0005FA02);
	r5 = D(r5, s1_2_0, 0xF3060507, 0xE3F60400, 0x050AFFFE, 0x05F7FFFB);
	r6 = D(r6, s1_2_0, 0x0009FB01, 0x09F6F4FF, 0x1014E7EC, 0xFB0106FA);
	r7 = D(r7, s1_2_0, 0x0505F006, 0xED0F07FA, 0xE9F20115, 0xE9EE17F2);
	r0 = D(r0, s1_2_1, 0xFA0AF7F5, 0x1108FDFB, 0x41EE06FE, 0xD30207FD);
	r1 = D(r1, s1_2_1, 0x0AF60409, 0x270FF1FD, 0x0703F302, 0xFEFCFA05);
	r2 = D(r2, s1_2_1, 0x050BFDFD, 0xF603170B, 0x04FCFEFC, 0x03061A00);
	r3 = D(r3, s1_2_1, 0xFF190204, 0xEAFBFCFD, 0xFEFF09FF, 0xDA11FC05);
	r4 = D(r4, s1_2_1, 0xFF0303FD, 0x00DDF4B9, 0x06011207, 0xFD020AFF);
	r5 = D(r5, s1_2_1, 0x1405EF10, 0x06FFEDFD, 0x0DF9FF04, 0xFA17F90E);
	r6 = D(r6, s1_2_1, 0x1DF3E70D, 0x2607F007, 0xF32DE9FD, 0xFC05FAFC);
	r7 = D(r7, s1_2_1, 0x15EFFD05, 0xFE0FF2FC, 0x1FE6E102, 0xF902EDDD);
	r0 = D(r0, s1_2_2, 0xFBEF0EF8, 0x020703FC, 0x01F71FF0, 0xF7FEFC01);
	r1 = D(r1, s1_2_2, 0xEF020BFF, 0x050806FD, 0x0501F901, 0x06FFF300);
	r2 = D(r2, s1_2_2, 0xEB0A0407, 0xFAFFED00, 0xF7FF02FD, 0xF602FF04);
	r3 = D(r3, s1_2_2, 0xF4FB1AF7, 0xE6F9100D, 0xFDFB04FB, 0x0CFFF70B);
	r4 = D(r4, s1_2_2, 0xFBFE0AFE, 0xE7F1ECD8, 0x0000050E, 0xFDFB0300);
	r5 = D(r5, s1_2_2, 0x00FCFD04, 0x1914F1ED, 0x0509FAFF, 0xFDFCFB17);
	r6 = D(r6, s1_2_2, 0x0702FF03, 0xE910D8F2, 0x151DE3F4, 0xF8F802FB);
	r7 = D(r7, s1_2_2, 0x00FE0C05, 0xF50AF8F9, 0xD5E53AEB, 0xF6160307);
	s0_0_0 = G[4][xy.y+0][xy.x+0]; s0_0_1 = G[4][xy.y+0][xy.x+1];
	s0_0_2 = G[4][xy.y+0][xy.x+2]; s0_1_0 = G[4][xy.y+1][xy.x+0];
	s0_1_1 = G[4][xy.y+1][xy.x+1]; s0_1_2 = G[4][xy.y+1][xy.x+2];
	s0_2_0 = G[4][xy.y+2][xy.x+0]; s0_2_1 = G[4][xy.y+2][xy.x+1];
	s0_2_2 = G[4][xy.y+2][xy.x+2]; s1_0_0 = G[5][xy.y+0][xy.x+0];
	s1_0_1 = G[5][xy.y+0][xy.x+1]; s1_0_2 = G[5][xy.y+0][xy.x+2];
	s1_1_0 = G[5][xy.y+1][xy.x+0]; s1_1_1 = G[5][xy.y+1][xy.x+1];
	s1_1_2 = G[5][xy.y+1][xy.x+2]; s1_2_0 = G[5][xy.y+2][xy.x+0];
	s1_2_1 = G[5][xy.y+2][xy.x+1]; s1_2_2 = G[5][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xD808F4EA, 0x070502F8, 0xFD07FAFB, 0xF7030801);
	r1 = D(r1, s0_0_0, 0xECF30FFC, 0x08F503FD, 0x00070502, 0x09FFFF01);
	r2 = D(r2, s0_0_0, 0x00FDFF03, 0xF3ED07FD, 0x08FC01F9, 0x00F8FC03);
	r3 = D(r3, s0_0_0, 0x15F0FB02, 0x0206FEFC, 0x0701FF02, 0xF114EBF5);
	r4 = D(r4, s0_0_0, 0xFF0000FF, 0xE5240721, 0x0A03FFFD, 0x0406FFFE);
	r5 = D(r5, s0_0_0, 0xEBABFFDF, 0xEE060807, 0x0EF8F7F7, 0x162225F8);
	r6 = D(r6, s0_0_0, 0xF3020302, 0x0C060200, 0x06050703, 0x070003FD);
	r7 = D(r7, s0_0_0, 0x09080702, 0xE4ECF5FC, 0x1D0802EF, 0xF4F8003C);
	r0 = D(r0, s0_0_1, 0xF5FC21F8, 0x0C000101, 0x141A1DFD, 0xFB04EE09);
	r1 = D(r1, s0_0_1, 0xFB0AF9F9, 0xFA0C04FA, 0x03EC0F02, 0x020BF6FD);
	r2 = D(r2, s0_0_1, 0xF0EB1502, 0xFE0B02FC, 0xEFF90406, 0x03FFF801);
	r3 = D(r3, s0_0_1, 0x0F15F7E4, 0x100EF9FF, 0xF30BEF0A, 0x02D40508);
	r4 = D(r4, s0_0_1, 0xFC0600FF, 0xF4F5040B, 0x14DE1108, 0x00FE0401);
	r5 = D(r5, s0_0_1, 0x0FDF35EE, 0xEE0D00FA, 0xFF0D06F5, 0x2324D5FC);
	r6 = D(r6, s0_0_1, 0xFAFDFBFD, 0x01F5F7F3, 0xFFF90601, 0xF3F80301);
	r7 = D(r7, s0_0_1, 0x0BEDF306, 0xF3060BF7, 0xFBF7DB00, 0x1CDFF1F9);
	r0 = D(r0, s0_0_2, 0xF8FBF4EF, 0x04F4F802, 0x25FBEBEF, 0x01FA0AFB);
	r1 = D(r1, s0_0_2, 0x07001DF9, 0xFEFB1104, 0x0A03FDFF, 0x04020200);
	r2 = D(r2, s0_0_2, 0xEE0BF600, 0x04000FFF, 0xFBFDFCFD, 0x0606FE01);
	r3 = D(r3, s0_0_2, 0x1FF909FD, 0x040BFC01, 0x0F031AFE, 0xF900EBF6);
	r4 = D(r4, s0_0_2, 0x020203FE, 0xE8FACC26, 0xFC1AF2F5, 0xFBFFFDFF);
	r5 = D(r5, s0_0_2, 0xF7131503, 0xF9120308, 0xFEF41AFF, 0x2329FBCF);
	r6 = D(r6, s0_0_2, 0xF504FF01, 0x1C1CCB10, 0xF4F4EF03, 0xE9F7F6FC);
	r7 = D(r7, s0_0_2, 0x03FFFCFF, 0x17E80AF9, 0xC9F409F6, 0xE9D0EB44);
	r0 = D(r0, s0_1_0, 0xEB27C9F1, 0x05060809, 0xF70EE30A, 0x15000601);
	r1 = D(r1, s0_1_0, 0x061AF4FB, 0xFA07F9FC, 0xF1F8EFF9, 0x02010900);
	r2 = D(r2, s0_1_0, 0x0CFFFDF7, 0x01F40305, 0x09020AFB, 0xFC000400);
	r3 = D(r3, s0_1_0, 0xEE0EF7F1, 0x01FC0807, 0x001403FA, 0xFDEEF3FB);
	r4 = D(r4, s0_1_0, 0xFF01FE00, 0xEF0407F8, 0xEF00FBF9, 0xF8FB07FE);
	r5 = D(r5, s0_1_0, 0x060EFF01, 0x030403F4, 0xF7FDFD0C, 0xFC071C09);
	r6 = D(r6, s0_1_0, 0x03F9FEF5, 0x0A040CF8, 0x07D900F7, 0x1B00F5FA);
	r7 = D(r7, s0_1_0, 0x090403F8, 0x100C05E1, 0xE6F832F3, 0x02FAF8EC);
	r0 = D(r0, s0_1_1, 0xE3F2BE13, 0xFC0CF703, 0xBA19F329, 0xED14E6F5);
	r1 = D(r1, s0_1_1, 0xE500F307, 0x10EB10FC, 0x0CFBDE01, 0xE5F40005);
	r2 = D(r2, s0_1_1, 0xECE60AFB, 0xF017F7F1, 0xE402FDFF, 0x06FC13FC);
	r3 = D(r3, s0_1_1, 0xD4F9FA18, 0x12DD1706, 0xFEFD00FF, 0xF304F604);
	r4 = D(r4, s0_1_1, 0xFB07FAFF, 0x1B14FCD5, 0xEAFC1A11, 0x32FD19FF);
	r5 = D(r5, s0_1_1, 0x19FAF9F8, 0x1FB9090E, 0xF5F7F116, 0x28C7D309);
	r6 = D(r6, s0_1_1, 0xED0DE703, 0x100E210A, 0xFA0BD611, 0xD7040A00);
	r7 = D(r7, s0_1_1, 0x16FC0D06, 0x00F6081F, 0xD6FCF402, 0xDC07ECCF);
	r0 = D(r0, s0_1_2, 0x0AF405FE, 0x0D0CD902, 0xF4F0D704, 0x12FFEAFF);
	r1 = D(r1, s0_1_2, 0xEFECF9FE, 0xF704ECF5, 0x01FE0A00, 0xFEFA05FE);
	r2 = D(r2, s0_1_2, 0x08FA140A, 0x01002005, 0xFF03FCFF, 0x000B03FE);
	r3 = D(r3, s0_1_2, 0xEDFEF123, 0x0406F703, 0x0FFDF7FF, 0xF9FFF800);
	r4 = D(r4, s0_1_2, 0xFE03FAFF, 0xF1FAD808, 0x0309F103, 0xF2F91705);
	r5 = D(r5, s0_1_2, 0xF80C0BE5, 0xEF1220F6, 0x18F800FF, 0x411DD801);
	r6 = D(r6, s0_1_2, 0xFEEE0302, 0x8106811F, 0x3406F3FE, 0xE2FE0E03);
	r7 = D(r7, s0_1_2, 0x040402FD, 0x010BE5EE, 0x81111A00, 0xF800F8D6);
	r0 = D(r0, s0_2_0, 0x17061CED, 0xFE0B0506, 0x0DF806F5, 0xFE040200);
	r1 = D(r1, s0_2_0, 0xEFFBEFF9, 0x1408FDFA, 0x0704FE00, 0x0708FFFF);
	r2 = D(r2, s0_2_0, 0xFC06FC07, 0xFB00FFFE, 0x06FEFDFE, 0x0504FEFD);
	r3 = D(r3, s0_2_0, 0x0612F7F5, 0xF1E61000, 0x010102FE, 0x0802FBF3);
	r4 = D(r4, s0_2_0, 0xFB00FE00, 0xE614171D, 0xF8240711, 0x0401FDFE);
	r5 = D(r5, s0_2_0, 0x0406FCFE, 0xDC0A00FD, 0x03E9F3FD, 0x211102F4);
	r6 = D(r6, s0_2_0, 0xFDFAF202, 0x010E0D05, 0x0C1103F3, 0xFA0306FC);
	r7 = D(r7, s0_2_0, 0x0FFE0501, 0x0CF105FF, 0xE01B01E9, 0x1DEEE642);
	r0 = D(r0, s0_2_1, 0x00040E13, 0x05020305, 0x120AE00D, 0x0FF90004);
	r1 = D(r1, s0_2_1, 0xF3FEF3FD, 0x150511FB, 0x070CE801, 0xFCF9FB00);
	r2 = D(r2, s0_2_1, 0x02000BFC, 0xF3FDF700, 0x02060406, 0xFEFFFE00);
	r3 = D(r3, s0_2_1, 0xEE0B27F7, 0xFEF30FFC, 0x00040206, 0xFDEC0AF7);
	r4 = D(r4, s0_2_1, 0xFE0202FF, 0x010C090D, 0x100A1DFD, 0xF6040002);
	r5 = D(r5, s0_2_1, 0x090A0708, 0xE0EEF7E6, 0xF8FEF4F2, 0x54DADDEE);
	r6 = D(r6, s0_2_1, 0x01FFDF01, 0x0400DDFB, 0x4DF506F7, 0xF50A0503);
	r7 = D(r7, s0_2_1, 0x0EFBFB00, 0xF11AF2FE, 0x1533F71F, 0x2721D3F6);
	r0 = D(r0, s0_2_2, 0x02FDFBED, 0x02FC0808, 0xEC010CE8, 0xFD010108);
	r1 = D(r1, s0_2_2, 0x011107F3, 0x0C061402, 0x0400FDFF, 0x0202FA00);
	r2 = D(r2, s0_2_2, 0xFAFBF3FB, 0xFF0308FC, 0x04FBFC02, 0x00FFF6FF);
	r3 = D(r3, s0_2_2, 0xFDF9D7F0, 0x02FEF201, 0x0100FDFC, 0xF40000FB);
	r4 = D(r4, s0_2_2, 0xFE020000, 0xF6F7E92B, 0xFAFAFF03, 0xFE02F8FF);
	r5 = D(r5, s0_2_2, 0xF508FB01, 0x09060D0C, 0xFD06F800, 0x45F0B2FC);
	r6 = D(r6, s0_2_2, 0xF405E801, 0x810493FD, 0xEAFE40F9, 0xFBFE0902);
	r7 = D(r7, s0_2_2, 0x14010007, 0xF0F1F3F8, 0xDFFBF5F7, 0x37E7D42C);
	r0 = D(r0, s1_0_0, 0xFA19FDE1, 0x01FAFFFA, 0x0D09FAF4, 0xFC080A10);
	r1 = D(r1, s1_0_0, 0xEA080D03, 0xF803F40D, 0xFFFFFE0E, 0xFF04FBF3);
	r2 = D(r2, s1_0_0, 0x09F9FD07, 0xFF0303F3, 0xFCF8F801, 0xFD0007F1);
	r3 = D(r3, s1_0_0, 0x0803EFF7, 0x090301ED, 0x02FCFEEE, 0x0808F100);
	r4 = D(r4, s1_0_0, 0x0100FEFF, 0x0512F624, 0x09F4E701, 0x0402FC02);
	r5 = D(r5, s1_0_0, 0xA8F981AD, 0x15040923, 0x05F8ED00, 0xD91026EA);
	r6 = D(r6, s1_0_0, 0xF8070901, 0x0E0304F8, 0xFA08F608, 0xFD00F80E);
	r7 = D(r7, s1_0_0, 0xF506F8FB, 0xF7160A03, 0xE3F51517, 0xFF06F007);
	r0 = D(r0, s1_0_1, 0x05EFFEFD, 0x05FCFF0E, 0xF1F90EF3, 0x001009F9);
	r1 = D(r1, s1_0_1, 0xFD0BE5F5, 0x0108FAF1, 0xF5020404, 0x14F00300);
	r2 = D(r2, s1_0_1, 0xEC0AFC24, 0x0502F3FE, 0xFEFFFA13, 0xFBFA0003);
	r3 = D(r3, s1_0_1, 0xFEEEEBEA, 0x06FF05F6, 0x20D80BFC, 0xFEFFF620);
	r4 = D(r4, s1_0_1, 0x0807FEF0, 0xEFE6F5F3, 0xF60A04FF, 0xF7FA020B);
	r5 = D(r5, s1_0_1, 0xE7F1F716, 0xFD07F700, 0x15F4F7EE, 0xE7002703);
	r6 = D(r6, s1_0_1, 0xFAF7FC08, 0x06FCEE10, 0x00FC0E23, 0xF604FB0E);
	r7 = D(r7, s1_0_1, 0xFEFF03E5, 0xE8F6E0FE, 0xFA0FE9FD, 0x1CECD8EC);
	r0 = D(r0, s1_0_2, 0x17F8ED15, 0x03FCFF02, 0x0C10EA00, 0x0B06FC08);
	r1 = D(r1, s1_0_2, 0x08FBF5FB, 0x0500FC05, 0xF6FEFFFE, 0x02FB02FB);
	r2 = D(r2, s1_0_2, 0xFF0704F9, 0xF9030304, 0x03FDFB03, 0xFCFD03FF);
	r3 = D(r3, s1_0_2, 0x02FC07EE, 0xFC07FD07, 0x08FF0600, 0xFEFA0BF6);
	r4 = D(r4, s1_0_2, 0x03FEFDFF, 0xF10CCD0B, 0x0AF908FA, 0x03000002);
	r5 = D(r5, s1_0_2, 0x1DFF00EB, 0x08FCFA0B, 0xF70AFEFE, 0x07F42BEE);
	r6 = D(r6, s1_0_2, 0x04FF07F9, 0x01CCD716, 0xF6FCF4F6, 0x02FAFE05);
	r7 = D(r7, s1_0_2, 0x01011304, 0xF00500FB, 0xFB02090C, 0xDC1ABB12);
	r0 = D(r0, s1_1_0, 0x5E1C0456, 0x020004FA, 0xEAF20209, 0xFBFEF611);
	r1 = D(r1, s1_1_0, 0x00F5F5FA, 0xF3FDFD0E, 0x11E10716, 0xFF0E06E8);
	r2 = D(r2, s1_1_0, 0x12EFF1FF, 0xE31BFFFD, 0xFCF702E9, 0xE90601FC);
	r3 = D(r3, s1_1_0, 0x0AF5F506, 0xFD13040E, 0xFD170100, 0xF805F725);
	r4 = D(r4, s1_1_0, 0x0509FF08, 0x170AF7F3, 0x0C16E8F5, 0x00FAFE0A);
	r5 = D(r5, s1_1_0, 0xFC05FC10, 0x18E2F9FD, 0xF023FE08, 0x1A101FBC);
	r6 = D(r6, s1_1_0, 0xE7F0030E, 0x080905ED, 0x1E0501F3, 0x1BE6F1FB);
	r7 = D(r7, s1_1_0, 0xFA0C04FF, 0x07E8F3FA, 0x05EEFDE4, 0x0716DEFE);
	r0 = D(r0, s1_1_1, 0xAAEF32E3, 0x13D6E9F7, 0x27F4F4EC, 0x179EE7C5);
	r1 = D(r1, s1_1_1, 0x070B12FE, 0x0842FED8, 0x11291B22, 0x164A01FA);
	r2 = D(r2, s1_1_1, 0xF3EE1D28, 0x0FCD0800, 0xEC090E2D, 0xECF80515);
	r3 = D(r3, s1_1_1, 0x2C20F641, 0xEA1CFF2F, 0x0D30FAFE, 0xDFF2FD04);
	r4 = D(r4, s1_1_1, 0x143D0540, 0x11FBFFF6, 0x1216E91D, 0xE528FB1A);
	r5 = D(r5, s1_1_1, 0x2D4B0B09, 0xF22AFB02, 0x04FCF606, 0x19A009F8);
	r6 = D(r6, s1_1_1, 0xFAE5EDEB, 0xFB1F0351, 0x100D24EF, 0x0C1AFA09);
	r7 = D(r7, s1_1_1, 0xE62EE6EE, 0xEE1E01FB, 0x3A3B12F7, 0x1CE51020);
	r0 = D(r0, s1_1_2, 0x07F8FA02, 0xFEF11500, 0x0204F5EF, 0xEBF30202);
	r1 = D(r1, s1_1_2, 0x0910010D, 0xEF050300, 0x100FF9F9, 0xFB07FF03);
	r2 = D(r2, s1_1_2, 0x1A06FA0F, 0x0306FFFB, 0x0A07FF03, 0xFFEE030E);
	r3 = D(r3, s1_1_2, 0x110D1606, 0x00FF0AF3, 0x060801F4, 0xE9F700FF);
	r4 = D(r4, s1_1_2, 0xF7FF02FE, 0x01EDE40A, 0x18F608FA, 0x0CF80307);
	r5 = D(r5, s1_1_2, 0x0009F2F9, 0x0CFD06F9, 0xF8FFFAF5, 0xF5C20D17);
	r6 = D(r6, s1_1_2, 0x0712000C, 0x07AC0A04, 0x111015DF, 0x110AF1F8);
	r7 = D(r7, s1_1_2, 0x0B08F7ED, 0xE6060B0C, 0xDB0303E8, 0xF7E1B81D);
	r0 = D(r0, s1_2_0, 0xEEE0E4FB, 0xFEFE06FA, 0xF40CF017, 0x06021107);
	r1 = D(r1, s1_2_0, 0xFB0FF413, 0x09F4F5F7, 0xFE02F808, 0xF5F80302);
	r2 = D(r2, s1_2_0, 0x0F030AF9, 0xFFF70300, 0x08FAFCF6, 0xF5F8FEF8);
	r3 = D(r3, s1_2_0, 0x0BD80B0A, 0xFAE0FDF8, 0x02F70500, 0xEADEF50B);
	r4 = D(r4, s1_2_0, 0x04010002, 0xFF2BEE0B, 0xFD1508ED, 0x04F7F9FD);
	r5 = D(r5, s1_2_0, 0x0EEE0101, 0xF2200811, 0xFDF5F60F, 0xECFAEA0A);
	r6 = D(r6, s1_2_0, 0xF700F311, 0x01FFFBFA, 0xF4DFF007, 0x0FFB0104);
	r7 = D(r7, s1_2_0, 0xFBDB0AF7, 0x0AF7F706, 0x0F14D809, 0xF9F6E914);
	r0 = D(r0, s1_2_1, 0xED0AFD00, 0x11F1FFFC, 0x313D1103, 0xF5D6FA05);
	r1 = D(r1, s1_2_1, 0xFD0C010E, 0x10F2FEF5, 0xFF1D0409, 0x0714FD03);
	r2 = D(r2, s1_2_1, 0x02E5F1FC, 0xE000FA01, 0x0410FC01, 0xFDF9FE00);
	r3 = D(r3, s1_2_1, 0x04E30D03, 0x0BC0E9FD, 0x08FA0206, 0xE3F105F5);
	r4 = D(r4, s1_2_1, 0xFEFDFF06, 0x06F8F9FD, 0xEEF1EC04, 0x04010409);
	r5 = D(r5, s1_2_1, 0xFDE21304, 0xE3E5FCF6, 0x151D1309, 0x061CE808);
	r6 = D(r6, s1_2_1, 0x0921070C, 0x14D8E61D, 0xD4CEEFF7, 0x0004F805);
	r7 = D(r7, s1_2_1, 0x03E2FA04, 0x172F2805, 0xF812F200, 0x1DD6CC2E);
	r0 = D(r0, s1_2_2, 0x1200F310, 0xFDEBFCFF, 0xF2F60EFF, 0x06F90C0E);
	r1 = D(r1, s1_2_2, 0x0CF403F8, 0x07FAFCFF, 0x0712FCF7, 0x0604FFFD);
	r2 = D(r2, s1_2_2, 0xFFF80208, 0xFC070201, 0x0BFCFF00, 0xE6FD02FD);
	r3 = D(r3, s1_2_2, 0xE7E7E413, 0x06DFFE02, 0xFFFC0401, 0x0218FB01);
	r4 = D(r4, s1_2_2, 0xFCFB0000, 0xED04DF18, 0xE40A11EC, 0xFFF80001);
	r5 = D(r5, s1_2_2, 0xF2F2FD05, 0x1EF6FAFF, 0x14F900FC, 0xE509D5FE);
	r6 = D(r6, s1_2_2, 0xFE15EF0E, 0xEECBE420, 0x0DE5E1F6, 0x0BF8F8FA);
	r7 = D(r7, s1_2_2, 0x17F107FC, 0xD3F2FD06, 0xDEDC000A, 0xFD12D50D);
	s0_0_0 = G[6][xy.y+0][xy.x+0]; s0_0_1 = G[6][xy.y+0][xy.x+1];
	s0_0_2 = G[6][xy.y+0][xy.x+2]; s0_1_0 = G[6][xy.y+1][xy.x+0];
	s0_1_1 = G[6][xy.y+1][xy.x+1]; s0_1_2 = G[6][xy.y+1][xy.x+2];
	s0_2_0 = G[6][xy.y+2][xy.x+0]; s0_2_1 = G[6][xy.y+2][xy.x+1];
	s0_2_2 = G[6][xy.y+2][xy.x+2]; s1_0_0 = G[7][xy.y+0][xy.x+0];
	s1_0_1 = G[7][xy.y+0][xy.x+1]; s1_0_2 = G[7][xy.y+0][xy.x+2];
	s1_1_0 = G[7][xy.y+1][xy.x+0]; s1_1_1 = G[7][xy.y+1][xy.x+1];
	s1_1_2 = G[7][xy.y+1][xy.x+2]; s1_2_0 = G[7][xy.y+2][xy.x+0];
	s1_2_1 = G[7][xy.y+2][xy.x+1]; s1_2_2 = G[7][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xFEF6EB01, 0x0303FAFE, 0x1EF6F714, 0xFEFB090A);
	r1 = D(r1, s0_0_0, 0x09F90211, 0x02050205, 0xFF06F5FD, 0x0305F902);
	r2 = D(r2, s0_0_0, 0xFCF5F7EC, 0x03F406FF, 0x06FF0603, 0xFF000600);
	r3 = D(r3, s0_0_0, 0xFAFA1018, 0xF9050307, 0x04FBF9F9, 0xF70713FF);
	r4 = D(r4, s0_0_0, 0xFF000202, 0x1DD9EC04, 0xFE0CFEF6, 0x02010500);
	r5 = D(r5, s0_0_0, 0xA78181BB, 0x05F9A104, 0xE6EE03F7, 0xEBFDE81F);
	r6 = D(r6, s0_0_0, 0xFCF8FF00, 0x020605F8, 0x08E62B09, 0x0305FA09);
	r7 = D(r7, s0_0_0, 0x0403F7FA, 0xFBEB03F5, 0xF20AF82C, 0x06DC04BA);
	r0 = D(r0, s0_0_1, 0xB314E8FB, 0x020502FD, 0x0AFFFE0E, 0x070CEEF7);
	r1 = D(r1, s0_0_1, 0x01F51605, 0x14FDEB08, 0x0FF1F907, 0xF80C0302);
	r2 = D(r2, s0_0_1, 0x03F1F606, 0xFDF9FA00, 0x03FCFEFC, 0x05080203);
	r3 = D(r3, s0_0_1, 0xF602E5FE, 0x080F02FB, 0xEA000500, 0x11FAF212);
	r4 = D(r4, s0_0_1, 0xFE0001FE, 0x1BF4F1F2, 0x10D1FF09, 0x0B02F300);
	r5 = D(r5, s0_0_1, 0x2802E32B, 0xFE00C016, 0xE4020BFB, 0xE4100900);
	r6 = D(r6, s0_0_1, 0xF5050400, 0xFB050B02, 0x03F7CE1C, 0x1001E80D);
	r7 = D(r7, s0_0_1, 0xFAF80906, 0xFED3F4D0, 0xF0E3B008, 0x19E433F9);
	r0 = D(r0, s0_0_2, 0x0105F5FF, 0xF8FC0B00, 0xECFD04EE, 0x0202FB07);
	r1 = D(r1, s0_0_2, 0xE9FC11F8, 0xF3FF02F9, 0x15FA00FC, 0xF901FC02);
	r2 = D(r2, s0_0_2, 0x1BEFF4FF, 0xFAFA02FF, 0x0105F7FB, 0x01F9FF02);
	r3 = D(r3, s0_0_2, 0x03D3F70B, 0xFDFEF203, 0xFB05FBFC, 0xF8F61111);
	r4 = D(r4, s0_0_2, 0xF90100FF, 0x23D9E8F9, 0xFBF81B0A, 0x0BFE0202);
	r5 = D(r5, s0_0_2, 0xFBFEF517, 0xEFE6E218, 0xFD0608F8, 0xB72A0001);
	r6 = D(r6, s0_0_2, 0x00010801, 0xDC060B0A, 0xFAD3F60B, 0x17FEEF06);
	r7 = D(r7, s0_0_2, 0x130EF5FA, 0xDE0A0A12, 0xEFD91720, 0xEC01EBF4);
	r0 = D(r0, s0_1_0, 0x4EFAF60B, 0x02FEFCFD, 0x16F8C3EC, 0xF6FA150C);
	r1 = D(r1, s0_1_0, 0x0804E4FA, 0x0CF903F3, 0x0D03F6FF, 0x01FA04FB);
	r2 = D(r2, s0_1_0, 0x100AF7F7, 0xEDE706E4, 0xF9FD0C07, 0xF4FE09FA);
	r3 = D(r3, s0_1_0, 0x0C07FFD4, 0xF6F1EFE5, 0x0F08ED0A, 0xF510EBDA);
	r4 = D(r4, s0_1_0, 0x02020101, 0x07DBEAFF, 0x1409FD0C, 0x00FC0005);
	r5 = D(r5, s0_1_0, 0x0302BBFE, 0x2D06DF04, 0xFCFCFDDC, 0x1EFAEA0E);
	r6 = D(r6, s0_1_0, 0x0306FF0E, 0x10F90504, 0xF6FBFAF1, 0x160AFB10);
	r7 = D(r7, s0_1_0, 0xF5F50DFF, 0x27E9F2F6, 0xE00C0F0B, 0xFBE0ED01);
	r0 = D(r0, s0_1_1, 0xEDF5F003, 0x130FFD05, 0x81291BE7, 0x1CFB1A0A);
	r1 = D(r1, s0_1_1, 0xF7EEF8E8, 0xFAF2E9FB, 0x06ECF3FD, 0xED0608F9);
	r2 = D(r2, s0_1_1, 0x09FEF3EF, 0x0AF01004, 0xFB01F8FB, 0x06FB05F7);
	r3 = D(r3, s0_1_1, 0xE8EC1218, 0x2607F509, 0xF6060600, 0x1406FB07);
	r4 = D(r4, s0_1_1, 0x090001FE, 0x03F80606, 0xE11F0508, 0xF405F402);
	r5 = D(r5, s0_1_1, 0xFF09CD0A, 0x29E8E3F0, 0xF4C3FB05, 0xFE1402F7);
	r6 = D(r6, s0_1_1, 0x08FDF404, 0xE4F2F5D6, 0xFAF31AEF, 0x0203EB11);
	r7 = D(r7, s0_1_1, 0xDDF81603, 0x0BD5FC81, 0x0BC2AAE6, 0x07E026DF);
	r0 = D(r0, s0_1_2, 0xF0ED0BFB, 0xF50810F6, 0xBD04D137, 0xFFF60AF2);
	r1 = D(r1, s0_1_2, 0xF811ED22, 0x0406FDFC, 0x0602FCFA, 0x0AFDF809);
	r2 = D(r2, s0_1_2, 0xFF09E412, 0x0300F0F5, 0x01FC02FC, 0xF50509FD);
	r3 = D(r3, s0_1_2, 0xF322DE23, 0x03F1F31A, 0xF6010005, 0xFAFB16E5);
	r4 = D(r4, s0_1_2, 0xFEFF01FE, 0x12EDEF0C, 0xF00E000B, 0x00040302);
	r5 = D(r5, s0_1_2, 0xEE200111, 0x00F60007, 0xF7010503, 0xFE23EDFD);
	r6 = D(r6, s0_1_2, 0x1603E10D, 0xF6FD16F0, 0x01B62140, 0xFD08FF05);
	r7 = D(r7, s0_1_2, 0xFDFCFA01, 0x15C70110, 0xBC032917, 0x1E04F400);
	r0 = D(r0, s0_2_0, 0xFBEA1AF7, 0x0701FAF3, 0x172AE504, 0xFBF408FD);
	r1 = D(r1, s0_2_0, 0xFF14DDE4, 0x0907FAF9, 0x06FCF9FD, 0x06FF0308);
	r2 = D(r2, s0_2_0, 0xEEF60B04, 0x0101F5E6, 0x01020B03, 0xFE01F2FC);
	r3 = D(r3, s0_2_0, 0xF8050713, 0x090AE201, 0x0202FCFF, 0x0B04FE0B);
	r4 = D(r4, s0_2_0, 0x01FF0200, 0x02C9E500, 0x05ED01E5, 0x04FF0101);
	r5 = D(r5, s0_2_0, 0x19ED02FC, 0xA6F52324, 0x0BF80A05, 0x14DAE5DF);
	r6 = D(r6, s0_2_0, 0x07F1EDFA, 0x0DFCFD03, 0x01E615F0, 0x010504F8);
	r7 = D(r7, s0_2_0, 0x08FF01FB, 0x11ECF210, 0x2720F007, 0x04F2E1C1);
	r0 = D(r0, s0_2_1, 0x00F9EC0B, 0x13FAFDFA, 0xEEF5C309, 0xFFF80505);
	r1 = D(r1, s0_2_1, 0xF11BFA16, 0x0313FFFB, 0xF5FE01FB, 0xFB080203);
	r2 = D(r2, s0_2_1, 0x10F51201, 0xFAF5010D, 0x0004FA06, 0x10FFFB08);
	r3 = D(r3, s0_2_1, 0x15F11FFA, 0x04081408, 0x02FF07F9, 0x03ED0D03);
	r4 = D(r4, s0_2_1, 0x03FD0000, 0x05E2F9F8, 0x1401FB08, 0x02FF0203);
	r5 = D(r5, s0_2_1, 0x18EE07FD, 0x12EE0FF7, 0xF503F9FB, 0x2FD91E06);
	r6 = D(r6, s0_2_1, 0xF0F8ECF5, 0x1C12F214, 0xE2E2EA17, 0x04FFFEFC);
	r7 = D(r7, s0_2_1, 0xF90BFE0C, 0xF010E5FC, 0x0B01D5DA, 0x05EF030D);
	r0 = D(r0, s0_2_2, 0x11E70BFC, 0x08F40102, 0xFA0204F8, 0x08F5F9FD);
	r1 = D(r1, s0_2_2, 0x13F60FEF, 0xFC0308FF, 0xF8080303, 0x09FAFFFD);
	r2 = D(r2, s0_2_2, 0x04FA00F6, 0xFD02F604, 0xFAFD01FE, 0x03FC0002);
	r3 = D(r3, s0_2_2, 0xF8FFFF03, 0xF40605FF, 0x04FF00FE, 0xFB09F600);
	r4 = D(r4, s0_2_2, 0x00FD00FF, 0x0511E206, 0x0AF8FEFF, 0x0201FFFF);
	r5 = D(r5, s0_2_2, 0x0FF000F9, 0xE0100B09, 0xF60FF806, 0x02E50424);
	r6 = D(r6, s0_2_2, 0xF70C02FD, 0xF7EF12E8, 0x0F0DE60D, 0x0400FCFE);
	r7 = D(r7, s0_2_2, 0x0208FCFB, 0x04F7081A, 0x33ED0B1A, 0xF60DEFF0);
	r0 = D(r0, s1_0_0, 0x17F50516, 0xFCFDFDFB, 0xF0F9EE00, 0x02FCFF0A);
	r1 = D(r1, s1_0_0, 0x0AFE0300, 0xFC000002, 0xF704FDFB, 0xFEFB0302);
	r2 = D(r2, s1_0_0, 0xFBFE03FB, 0xE4F903FE, 0x05FEFF02, 0xFA02FDFB);
	r3 = D(r3, s1_0_0, 0x0DFF1919, 0x05F9FE05, 0xFBFE0003, 0xFBFEFAF8);
	r4 = D(r4, s1_0_0, 0x02000003, 0xF4050FEF, 0xF3020DFD, 0x03000103);
	r5 = D(r5, s1_0_0, 0xA38135A4, 0xE407FF07, 0x07010AFF, 0x1D88F140);
	r6 = D(r6, s1_0_0, 0x0002FDFE, 0xFCFDFF02, 0xF8031307, 0x08FB000A);
	r7 = D(r7, s1_0_0, 0x00FCFCF2, 0xD00DFAEA, 0x0D02131E, 0xD106E3E7);
	r0 = D(r0, s1_0_1, 0xFAF2F821, 0x040BFEFF, 0x00EAFEF9, 0x06FE0510);
	r1 = D(r1, s1_0_1, 0x07020B00, 0x0A05FAFC, 0xFFFFFE01, 0x03010100);
	r2 = D(r2, s1_0_1, 0x14F4FE01, 0x02FB0C05, 0x0003F9FD, 0x03FBFF04);
	r3 = D(r3, s1_0_1, 0x09F0FFF4, 0x00000200, 0x080904EC, 0xFF060209);
	r4 = D(r4, s1_0_1, 0x02010005, 0xECF2FF00, 0xF5030CE3, 0xFC0203FE);
	r5 = D(r5, s1_0_1, 0x00FBAE16, 0x02030905, 0x02060B05, 0x069DFE31);
	r6 = D(r6, s1_0_1, 0x04010200, 0x02FA010E, 0x01002316, 0x04FD0203);
	r7 = D(r7, s1_0_1, 0x04F803F4, 0x24F903F9, 0x0718F820, 0xF5CCF708);
	r0 = D(r0, s1_0_2, 0xFAEC001E, 0x00FC0400, 0x0BF716F4, 0xFCFD0109);
	r1 = D(r1, s1_0_2, 0x0402FC00, 0xFD020200, 0x00FD0501, 0x01FD0602);
	r2 = D(r2, s1_0_2, 0x08FA0507, 0x01040003, 0x0105FEFC, 0xFEFDFF04);
	r3 = D(r3, s1_0_2, 0x05F71C11, 0xFF00FB06, 0x0101FB05, 0xFD00F9FB);
	r4 = D(r4, s1_0_2, 0x01000102, 0x07E80AF6, 0x0F020EF8, 0x01FCFE03);
	r5 = D(r5, s1_0_2, 0x1405FF03, 0xF3070E0D, 0xFE00FB09, 0xEB810F39);
	r6 = D(r6, s1_0_2, 0xFBFFF602, 0xFBF2FF11, 0x0AF2FA0F, 0x030002FE);
	r7 = D(r7, s1_0_2, 0xFC04F7F5, 0x00070DFD, 0xE30D1634, 0xF001D9EE);
	r0 = D(r0, s1_1_0, 0xEFC61281, 0xFD0106FE, 0xFFFB2305, 0x11FCFC10);
	r1 = D(r1, s1_1_0, 0xF1FF01F3, 0xF5FD0005, 0xF9FE03FE, 0xF5FEFFFD);
	r2 = D(r2, s1_1_0, 0xF10301FC, 0xE4EFFFC7, 0x03FDFE06, 0xFE06FEFC);
	r3 = D(r3, s1_1_0, 0xD70C1807, 0xDFFE0DFD, 0xF803FF07, 0xDAF80EE3);
	r4 = D(r4, s1_1_0, 0x01010004, 0xF0E910FF, 0xEE0208E2, 0xFD000201);
	r5 = D(r5, s1_1_0, 0xE6F8140A, 0xFE05F513, 0xE7FD07E7, 0x0E8EEC41);
	r6 = D(r6, s1_1_0, 0x0AFCF905, 0xFAFA0407, 0xD0F30E16, 0xFB010301);
	r7 = D(r7, s1_1_0, 0x0BEAFAFB, 0xF6010DDC, 0xE9FDEE22, 0xF2E9EEF1);
	r0 = D(r0, s1_1_1, 0xFE06080F, 0xFC0C01F6, 0xFC0BFA02, 0x19F31912);
	r1 = D(r1, s1_1_1, 0xF2F90601, 0xF0E4EE11, 0xFAF0F2FB, 0xFCF3FF0A);
	r2 = D(r2, s1_1_1, 0xF3FAFE07, 0x0C0805F9, 0xFF02FE15, 0xFDF8FB01);
	r3 = D(r3, s1_1_1, 0xE10C0FFC, 0x06FE08F9, 0xEE090204, 0xE50201FE);
	r4 = D(r4, s1_1_1, 0xFFFC0204, 0xF5F305E8, 0xCCEFEF00, 0xF401FD0A);
	r5 = D(r5, s1_1_1, 0xB80FFDF9, 0xF1DB0181, 0xF6FBF9F5, 0xEE9302FB);
	r6 = D(r6, s1_1_1, 0x030108FA, 0xF3F9021C, 0xC80107E3, 0x03FF0003);
	r7 = D(r7, s1_1_1, 0x11E80901, 0x05EBE9EB, 0x9A2814A0, 0x04CB12FB);
	r0 = D(r0, s1_1_2, 0xEFF5F514, 0xFD040303, 0xFE001704, 0xF9F81011);
	r1 = D(r1, s1_1_2, 0xC8FCF4EF, 0x050600F8, 0x01FDFE02, 0x02FEFD05);
	r2 = D(r2, s1_1_2, 0x02F2F805, 0xFCFD00FE, 0xFE02FC02, 0x00FB0302);
	r3 = D(r3, s1_1_2, 0xFB1C0205, 0xFFFEF6FA, 0xF8FFFD02, 0xEB000900);
	r4 = D(r4, s1_1_2, 0x00000203, 0x03F7EDFA, 0xF10121FE, 0xFFFFFA01);
	r5 = D(r5, s1_1_2, 0xF00907FD, 0x0D000508, 0x090002F9, 0xEBA01A49);
	r6 = D(r6, s1_1_2, 0xFE09E9F6, 0x02F41016, 0xDF0B0AF0, 0xFF060203);
	r7 = D(r7, s1_1_2, 0xFEFEEF06, 0x03FB190B, 0x02FAF9FC, 0x07E0DEF8);
	r0 = D(r0, s1_2_0, 0xEEF2F91B, 0xFCFB0001, 0xC70C18FB, 0xF7FBFC0B);
	r1 = D(r1, s1_2_0, 0xED0A10FD, 0xF8FD0102, 0xFEFEFAFF, 0x04FDFE02);
	r2 = D(r2, s1_2_0, 0x0FFCFF05, 0xE707FFF9, 0xFD000002, 0xF80001FB);
	r3 = D(r3, s1_2_0, 0x13011E12, 0xE5010700, 0x00FDFC02, 0xE70301F9);
	r4 = D(r4, s1_2_0, 0x00FF0002, 0x000613F4, 0xFA01F803, 0xFE00FE00);
	r5 = D(r5, s1_2_0, 0x0AFE040D, 0xFE0C0210, 0x0FFF03FC, 0x0981E946);
	r6 = D(r6, s1_2_0, 0xFAFDF9FD, 0xFDF50B0C, 0xE7F90110, 0xFCFF0307);
	r7 = D(r7, s1_2_0, 0x05FEFBFC, 0x110411FC, 0x0BEE0117, 0xEEF5F8F0);
	r0 = D(r0, s1_2_1, 0xF2F7F513, 0x010609FC, 0xB0ED0089, 0x06F90610);
	r1 = D(r1, s1_2_1, 0xF3FDFFF8, 0xF1FC03F9, 0xF8FFFDFB, 0x01FE0401);
	r2 = D(r2, s1_2_1, 0x080002FE, 0x0001FF03, 0x0502FD08, 0xFA00FE00);
	r3 = D(r3, s1_2_1, 0xE8F808FE, 0x0A020A02, 0x01000103, 0xF7040DF7);
	r4 = D(r4, s1_2_1, 0xFFFF0104, 0xF009FEF0, 0xEBFBFDFB, 0x0100FF02);
	r5 = D(r5, s1_2_1, 0xF7FCF90F, 0xE9070F07, 0xF50605FC, 0x0092F844);
	r6 = D(r6, s1_2_1, 0xEAFEEDFD, 0x02F90302, 0x23F2F4FD, 0x01FE03FF);
	r7 = D(r7, s1_2_1, 0x14F7FC00, 0xE3F400CE, 0x81EFFACF, 0x15D3FCF8);
	r0 = D(r0, s1_2_2, 0xE2EFFC15, 0x04000003, 0x041116E8, 0x08FCF908);
	r1 = D(r1, s1_2_2, 0xE5F812EF, 0xF70208FD, 0xF70201FF, 0xF5FEFF03);
	r2 = D(r2, s1_2_2, 0xF1FE00FE, 0xF8FE0700, 0x0004FE04, 0xFEFE0201);
	r3 = D(r3, s1_2_2, 0xD50500FF, 0xE3FD0EFC, 0xFAFB00FF, 0x0105FE02);
	r4 = D(r4, s1_2_2, 0x03000003, 0xFD05F9F0, 0xFD050DFC, 0xFEFD0001);
	r5 = D(r5, s1_2_2, 0xF805FA00, 0xE20BEA0A, 0xF10102F6, 0x01810734);
	r6 = D(r6, s1_2_2, 0xF003F6F1, 0x05000113, 0xCEF2E7ED, 0xFDFEFFFC);
	r7 = D(r7, s1_2_2, 0x05FC00FD, 0x1B0305F4, 0x9D021408, 0x16EFE3F5);
	f0 = vec4(r0) * 6.2000124e-05;
	f0 += vec4(-2.805e-02, -3.815e-02, -2.387e-02, 8.596e-03);
	f0 = clamp(f0, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 0), f0);
	f1 = vec4(r1) * 6.2000124e-05;
	f1 += vec4(-1.158e-02, -7.109e-03, -1.547e-02, -1.241e-02);
	f1 = clamp(f1, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 0), f1);
	f2 = vec4(r2) * 6.2000124e-05;
	f2 += vec4(-1.432e-02, -1.116e-02, -2.768e-02, 5.000e-03);
	f2 = clamp(f2, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 1), f2);
	f3 = vec4(r3) * 6.2000124e-05;
	f3 += vec4(-8.344e-02, 1.401e-03, -5.819e-02, -2.305e-02);
	f3 = clamp(f3, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 1), f3);
	f4 = vec4(r4) * 6.2000124e-05;
	f4 += vec4(-4.763e-03, -5.045e-03, -1.245e-02, -7.617e-03);
	f4 = clamp(f4, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 0), f4);
	f5 = vec4(r5) * 6.2000124e-05;
	f5 += vec4(4.568e-03, -8.857e-02, -8.630e-03, -3.087e-02);
	f5 = clamp(f5, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 0), f5);
	f6 = vec4(r6) * 6.2000124e-05;
	f6 += vec4(-6.953e-03, -7.888e-03, 1.679e-02, 2.295e-03);
	f6 = clamp(f6, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 1), f6);
	f7 = vec4(r7) * 6.2000124e-05;
	f7 += vec4(2.740e-02, -2.766e-02, -5.736e-02, 1.194e-01);
	f7 = clamp(f7, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 1), f7);
}

//!DESC [CuNNy_8x32_DS_vk] -conv7
//!HOOK LUMA
//!COMPUTE 32 16 8 8
//!BIND conv6
//!BIND LUMA
//!SAVE conv7
//!WIDTH LUMA.w 4 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_spirv_intrinsics : require
spirv_instruction (extensions = ["SPV_KHR_integer_dot_product"], capabilities = [6019, 6018], id = 4450)
int dp4(int a, int b, spirv_literal int fmt);
#define D(r, s, a, b, c, d) r + ivec4(dp4(s, a, 0), dp4(s, b, 0), dp4(s, c, 0), dp4(s, d, 0))
shared int G[8][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(4, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			vec2 p;
			vec4 r, g, b, a;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(1, 1)) * conv6_pt;
			r = conv6_gather(p, 0);
			g = conv6_gather(p, 1);
			b = conv6_gather(p, 2);
			a = conv6_gather(p, 3);
			vec4 v0 = vec4(r.w, g.w, b.w, a.w) * 1.0000000e+00;
			vec4 v1 = vec4(r.z, g.z, b.z, a.z) * 1.0000000e+00;
			vec4 v2 = vec4(r.x, g.x, b.x, a.x) * 1.0000000e+00;
			vec4 v3 = vec4(r.y, g.y, b.y, a.y) * 1.0000000e+00;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(3, 1)) * conv6_pt;
			r = conv6_gather(p, 0);
			g = conv6_gather(p, 1);
			b = conv6_gather(p, 2);
			a = conv6_gather(p, 3);
			vec4 v4 = vec4(r.w, g.w, b.w, a.w) * 1.0000000e+00;
			vec4 v5 = vec4(r.z, g.z, b.z, a.z) * 1.0000000e+00;
			vec4 v6 = vec4(r.x, g.x, b.x, a.x) * 1.0000000e+00;
			vec4 v7 = vec4(r.y, g.y, b.y, a.y) * 1.0000000e+00;
			G[0][ay][ax] = int(packSnorm4x8(v0));
			G[1][ay][ax] = int(packSnorm4x8(v1));
			G[2][ay][ax] = int(packSnorm4x8(v2));
			G[3][ay][ax] = int(packSnorm4x8(v3));
			G[4][ay][ax] = int(packSnorm4x8(v4));
			G[5][ay][ax] = int(packSnorm4x8(v5));
			G[6][ay][ax] = int(packSnorm4x8(v6));
			G[7][ay][ax] = int(packSnorm4x8(v7));
		}
	}
	barrier();
	int s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;
	ivec4 r0, r1, r2, r3, r4, r5, r6, r7;
	vec4 f0, f1, f2, f3, f4, f5, f6, f7;
	r0 = ivec4(0); r1 = ivec4(0); r2 = ivec4(0); r3 = ivec4(0); r4 = ivec4(0); r5 = ivec4(0); r6 = ivec4(0); r7 = ivec4(0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2]; s1_0_0 = G[1][xy.y+0][xy.x+0];
	s1_0_1 = G[1][xy.y+0][xy.x+1]; s1_0_2 = G[1][xy.y+0][xy.x+2];
	s1_1_0 = G[1][xy.y+1][xy.x+0]; s1_1_1 = G[1][xy.y+1][xy.x+1];
	s1_1_2 = G[1][xy.y+1][xy.x+2]; s1_2_0 = G[1][xy.y+2][xy.x+0];
	s1_2_1 = G[1][xy.y+2][xy.x+1]; s1_2_2 = G[1][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xFC080302, 0xFBFBFEFE, 0x02060202, 0xF1FF0402);
	r1 = D(r1, s0_0_0, 0x070D0905, 0xFE090500, 0x07FCEC06, 0xFDF5FAFF);
	r2 = D(r2, s0_0_0, 0xFFFD01FB, 0x02FD0503, 0x0B0BFC06, 0x03F90BFD);
	r3 = D(r3, s0_0_0, 0xFB0404FF, 0x01FE0405, 0x000B0002, 0x08010DFE);
	r4 = D(r4, s0_0_0, 0x000DFF04, 0xF8170D00, 0xFFF8FCFA, 0x01030E01);
	r5 = D(r5, s0_0_0, 0x040C0206, 0xF9FF0001, 0x04F70D02, 0xFD00FF00);
	r6 = D(r6, s0_0_0, 0xFAF60D06, 0x0000FC03, 0x0D05F908, 0xF2FB0A00);
	r7 = D(r7, s0_0_0, 0xFEFD0400, 0x05ED05FF, 0x0011FC01, 0xFAFA0900);
	r0 = D(r0, s0_0_1, 0xFF0306FF, 0xF90D0903, 0xFFFD0A03, 0x05FA0206);
	r1 = D(r1, s0_0_1, 0xF40E0403, 0x03060604, 0x09D1FB09, 0x02FAF8FE);
	r2 = D(r2, s0_0_1, 0x02FF06FA, 0xFB02FE02, 0xE40E0804, 0xFAFBFD02);
	r3 = D(r3, s0_0_1, 0xF705FCFC, 0xFE07FF07, 0xED09EF00, 0xF905E3FC);
	r4 = D(r4, s0_0_1, 0x06110F06, 0x000AFEFB, 0x000D0EF8, 0x00DD1103);
	r5 = D(r5, s0_0_1, 0xFC0EFB08, 0xF504FBFF, 0xFA000805, 0xF4080404);
	r6 = D(r6, s0_0_1, 0xF2FC0F02, 0xFF081506, 0xEF130304, 0xBF1D0DFF);
	r7 = D(r7, s0_0_1, 0xEF140405, 0x01F5FA02, 0x0302F903, 0x000602FE);
	r0 = D(r0, s0_0_2, 0x0401FAFE, 0xFAFC0203, 0x03020408, 0x000301FF);
	r1 = D(r1, s0_0_2, 0x0606F5FE, 0x001002FD, 0x0500F811, 0x81070C03);
	r2 = D(r2, s0_0_2, 0xFF0200F9, 0x0302F805, 0xFD04F206, 0x00010605);
	r3 = D(r3, s0_0_2, 0xFE080201, 0xFFFE0509, 0xD80C0709, 0xFD0E0700);
	r4 = D(r4, s0_0_2, 0x08110906, 0x031600FD, 0x03FD00F5, 0x00050300);
	r5 = D(r5, s0_0_2, 0x0405FC09, 0x03FB0104, 0xFCFE0A07, 0x0505FE02);
	r6 = D(r6, s0_0_2, 0xFBFB0604, 0x04F5FB0A, 0xFEF10305, 0xFBF7FD05);
	r7 = D(r7, s0_0_2, 0xFCFBFEFC, 0xFFF70105, 0x0100F902, 0x06FE02FF);
	r0 = D(r0, s0_1_0, 0x0006ED00, 0xFCFFE801, 0x04050201, 0xABFADAFF);
	r1 = D(r1, s0_1_0, 0x09023602, 0x05F2F500, 0xFB16100A, 0xF9FFFB01);
	r2 = D(r2, s0_1_0, 0x04FF00FA, 0xF5F60804, 0xF0F5DD0E, 0xFEFB03FF);
	r3 = D(r3, s0_1_0, 0xFF0C07FF, 0xF9000505, 0xF80DFA00, 0xFDFB12FE);
	r4 = D(r4, s0_1_0, 0x05FF0CFF, 0x021021FB, 0x0303FEFB, 0xFF021203);
	r5 = D(r5, s0_1_0, 0xFF080D07, 0xF604FE00, 0xFFFA0104, 0xEF0EE901);
	r6 = D(r6, s0_1_0, 0xE917EB01, 0xF1FEFC02, 0x05020D07, 0xCB07FD01);
	r7 = D(r7, s0_1_0, 0xB0EEDD02, 0xFB000301, 0x10EAE801, 0xF7FAFEFE);
	r0 = D(r0, s0_1_1, 0xEFFA00FC, 0xF603EFFC, 0xF0080007, 0xF4040DF8);
	r1 = D(r1, s0_1_1, 0xFAEB0600, 0x00020206, 0x0E101A0A, 0xF40F14FA);
	r2 = D(r2, s0_1_1, 0xFE0109F7, 0xE902DC00, 0x81081013, 0xD902ED06);
	r3 = D(r3, s0_1_1, 0x0505D4FE, 0xFD001609, 0xC0FCC906, 0xF2FD0F00);
	r4 = D(r4, s0_1_1, 0x00010E05, 0xD9F6170A, 0x0C0E1DF8, 0xF20B3D05);
	r5 = D(r5, s0_1_1, 0x041C1304, 0xD102F709, 0xFAF90B07, 0xE5FAD0FA);
	r6 = D(r6, s0_1_1, 0xDB1281FD, 0xA10CFBFF, 0x96121C04, 0x81FED902);
	r7 = D(r7, s0_1_1, 0x000114FC, 0x010F8305, 0xE9ECF80A, 0xF700F0FB);
	r0 = D(r0, s0_1_2, 0x06FEFC16, 0x00F3FCF5, 0x0102FC05, 0xFF03F90E);
	r1 = D(r1, s0_1_2, 0x09000214, 0x0005F906, 0x05130016, 0xE8001003);
	r2 = D(r2, s0_1_2, 0x0500FCF9, 0xFCFB0803, 0xF3FD0F02, 0xFBFBFAFA);
	r3 = D(r3, s0_1_2, 0xF30200FC, 0xFB03010B, 0xBB000702, 0xF504FE04);
	r4 = D(r4, s0_1_2, 0x010D020D, 0xF9060203, 0x0205FFFC, 0x0A030201);
	r5 = D(r5, s0_1_2, 0x01FAE901, 0x01F5FDF5, 0xF7F6EEFB, 0xF60C0000);
	r6 = D(r6, s0_1_2, 0xDD0FFBF3, 0xE4FE0C03, 0xF4E7F306, 0xF300FB00);
	r7 = D(r7, s0_1_2, 0x0501F907, 0x0206F9F8, 0x00ED0A0B, 0x05FDFF05);
	r0 = D(r0, s0_2_0, 0x00040901, 0x020306FE, 0x08030001, 0xF2040D02);
	r1 = D(r1, s0_2_0, 0x03FEFE03, 0x00FFF000, 0xFA07010B, 0xFCFBF801);
	r2 = D(r2, s0_2_0, 0xFEFFFCFB, 0xF8040D03, 0x07F4FF06, 0xFEFD0900);
	r3 = D(r3, s0_2_0, 0x01070EFD, 0xFF010107, 0xFC001404, 0x0802FCFD);
	r4 = D(r4, s0_2_0, 0x0204F5FF, 0xF2FF08FF, 0x01FD04FA, 0x01010000);
	r5 = D(r5, s0_2_0, 0x0102FA07, 0x03020A00, 0xFD020A01, 0xFB05FDF9);
	r6 = D(r6, s0_2_0, 0xFEFD0A02, 0x00FBFC02, 0xFBF9F907, 0x03F3F900);
	r7 = D(r7, s0_2_0, 0xF4EA0302, 0xFAFF1000, 0x0301F904, 0x00FB0BFF);
	r0 = D(r0, s0_2_1, 0xFD03FB01, 0xFE010401, 0x05020301, 0xDE02F604);
	r1 = D(r1, s0_2_1, 0x090E0707, 0x0701F900, 0xF607040E, 0xFD00FBFE);
	r2 = D(r2, s0_2_1, 0x0403FCF9, 0x01FCF600, 0xF1F5F805, 0xFA0402FC);
	r3 = D(r3, s0_2_1, 0x05FB08FC, 0xFB01FC07, 0xFC10110D, 0x0BF6F8FC);
	r4 = D(r4, s0_2_1, 0x01FAFDFE, 0xF5FB06FA, 0xFF0405FB, 0x09090501);
	r5 = D(r5, s0_2_1, 0x16120A02, 0x0009FA06, 0xF7FFF703, 0xF1FB04FD);
	r6 = D(r6, s0_2_1, 0xD0131201, 0xD9FC0C07, 0x0A110A0E, 0xF1070000);
	r7 = D(r7, s0_2_1, 0xF8FF0401, 0x000816FF, 0xD9010306, 0xEEFE0201);
	r0 = D(r0, s0_2_2, 0x0200FC01, 0x04030300, 0x04FE010A, 0x02FEF8FC);
	r1 = D(r1, s0_2_2, 0x0008FC07, 0x02020303, 0x05FEFF0E, 0x0402FFFE);
	r2 = D(r2, s0_2_2, 0xFF0001FA, 0x01F8FB03, 0x1702F50C, 0x03FF0103);
	r3 = D(r3, s0_2_2, 0xFD0201FD, 0x01000109, 0xF9040809, 0xFF0902FA);
	r4 = D(r4, s0_2_2, 0x0503F606, 0xFDFE0204, 0xFE0205F7, 0x02FD0303);
	r5 = D(r5, s0_2_2, 0x0AFBE811, 0x03EFFEFF, 0x00F90106, 0xF5040103);
	r6 = D(r6, s0_2_2, 0xF0090E06, 0xF0F405FD, 0xF4F70B01, 0xF8150905);
	r7 = D(r7, s0_2_2, 0xFD09040B, 0xFE081501, 0xF60006FB, 0xFAFCFBFA);
	r0 = D(r0, s1_0_0, 0x0002FF04, 0xFD02F3F9, 0x01F7FB09, 0x0800FDEE);
	r1 = D(r1, s1_0_0, 0x0209F301, 0x01FFFF05, 0x0A08FB0E, 0x03FE0101);
	r2 = D(r2, s1_0_0, 0x0105FE05, 0x02FF05F8, 0xFAFA0103, 0x02020005);
	r3 = D(r3, s1_0_0, 0xFCFF03FF, 0x00FDFFFC, 0xFB020011, 0x0AFEFC06);
	r4 = D(r4, s1_0_0, 0x0700FC02, 0xFAFD010E, 0x010400FB, 0xFB04FD09);
	r5 = D(r5, s1_0_0, 0xFEFF00FA, 0xF909E910, 0x040205F6, 0xFEFC04FD);
	r6 = D(r6, s1_0_0, 0xF306F210, 0x0103FF05, 0x01FFFFFF, 0xFEFBF9F8);
	r7 = D(r7, s1_0_0, 0xFE03F9F9, 0x040004FE, 0x0407FD08, 0x0704FAFD);
	r0 = D(r0, s1_0_1, 0xF3FDF70C, 0x0607D912, 0x02FBFE03, 0x0504F8EF);
	r1 = D(r1, s1_0_1, 0xFE03FC09, 0xFAFD0409, 0xFFF103DB, 0x05FFE5F0);
	r2 = D(r2, s1_0_1, 0xFC00FFFB, 0xFEFB0E00, 0x0E13F0ED, 0x01FDFAFC);
	r3 = D(r3, s1_0_1, 0xFB09FA02, 0x04FA0208, 0x01FF0800, 0xF70DFCF2);
	r4 = D(r4, s1_0_1, 0xFAFDF10B, 0xFBFC0111, 0x01020109, 0xFE01FAF6);
	r5 = D(r5, s1_0_1, 0x0002F705, 0x01F30107, 0x06090BF2, 0x02FE0F05);
	r6 = D(r6, s1_0_1, 0x05FCE4CC, 0x0701F7FB, 0xF1060116, 0xE806E1EA);
	r7 = D(r7, s1_0_1, 0xFC06F005, 0xFE03FCF8, 0x06F8F80E, 0x00FCF8EF);
	r0 = D(r0, s1_0_2, 0x0AFCFEFA, 0x0302FE05, 0xFEFF0804, 0xFFFEFC07);
	r1 = D(r1, s1_0_2, 0x00FC010A, 0xF9050910, 0x0807FFDC, 0xFFFA000C);
	r2 = D(r2, s1_0_2, 0x0103F9FC, 0x030104F0, 0x04FFF50B, 0xFD010408);
	r3 = D(r3, s1_0_2, 0xFEFEFA06, 0xFEFFFE06, 0xF4F60B10, 0x0405FDFB);
	r4 = D(r4, s1_0_2, 0x03030406, 0xFDFE0111, 0x000004FE, 0xFBFEFFF3);
	r5 = D(r5, s1_0_2, 0xF9FBFB0C, 0xFE03FF00, 0x05FE04F7, 0xF9FAF806);
	r6 = D(r6, s1_0_2, 0xFFFBF7DB, 0x0C000005, 0x11F8F0E2, 0x0E020DE7);
	r7 = D(r7, s1_0_2, 0x030001F4, 0x01FDFAF0, 0xFB070003, 0x06080CF0);
	r0 = D(r0, s1_1_0, 0x0EFF0300, 0x1401F111, 0xF8F700EC, 0x150116F9);
	r1 = D(r1, s1_1_0, 0x04FDE3FE, 0x0504F904, 0x04010CE9, 0xFE09FB00);
	r2 = D(r2, s1_1_0, 0xFCFF02FB, 0x0C000511, 0x050A0502, 0xF7F8F213);
	r3 = D(r3, s1_1_0, 0xF5F708F1, 0xFC06FD08, 0xE2F7FFF0, 0xFF030CF1);
	r4 = D(r4, s1_1_0, 0x0705FEEC, 0xF2FBFBE3, 0xFEFB0302, 0xF6FC09EC);
	r5 = D(r5, s1_1_0, 0x09010005, 0xF3060CF7, 0x0E02FD08, 0xF7F3FF08);
	r6 = D(r6, s1_1_0, 0x0BFB1309, 0xF2FE0502, 0x01010108, 0x00020A10);
	r7 = D(r7, s1_1_0, 0xFEFC041E, 0xFCFEFDF9, 0xF70BF5F0, 0x140DF802);
	r0 = D(r0, s1_1_1, 0x0703F7FF, 0x33030CD7, 0xF705E30D, 0xFE10F0FF);
	r1 = D(r1, s1_1_1, 0xFAFBD92A, 0xEE05F6F4, 0xD8DDF81E, 0x04F9F602);
	r2 = D(r2, s1_1_1, 0xF5F5F302, 0xF1FC07F1, 0x1937ED00, 0x12240A0B);
	r3 = D(r3, s1_1_1, 0xFA22EEF1, 0x0E050801, 0x1B2FE321, 0xF321E703);
	r4 = D(r4, s1_1_1, 0xF6EBE8DD, 0xF60BC9DF, 0xEFF70304, 0xDFC0E9E9);
	r5 = D(r5, s1_1_1, 0xEEFCEC07, 0xF11CF7E1, 0x010324F3, 0xFD01E40A);
	r6 = D(r6, s1_1_1, 0x2CFE0223, 0x13F901EA, 0xEB0903E2, 0x0A09F5ED);
	r7 = D(r7, s1_1_1, 0xF80CE6F5, 0x0AFEEE11, 0xECF217C2, 0x1D08EE03);
	r0 = D(r0, s1_1_2, 0xF90D0102, 0x07F2EB07, 0xFC0708FF, 0xFD000107);
	r1 = D(r1, s1_1_2, 0x0603F8F0, 0xF7FD0307, 0x02100108, 0xF8280CED);
	r2 = D(r2, s1_1_2, 0xFB0DF907, 0xFD08F3FD, 0xF5E507FC, 0xFDF702F9);
	r3 = D(r3, s1_1_2, 0x07F205FA, 0x03F304FB, 0xF11223FB, 0xFF0E0EF4);
	r4 = D(r4, s1_1_2, 0xFF120300, 0x030203FE, 0xFC07FE0A, 0xF509F405);
	r5 = D(r5, s1_1_2, 0x17F7E6FC, 0xFFFAF906, 0x06E905F1, 0x05F90008);
	r6 = D(r6, s1_1_2, 0xF70D0C10, 0xDD02DE09, 0xF6ECE2FF, 0x07091407);
	r7 = D(r7, s1_1_2, 0x04000C04, 0xF9F4F605, 0xF90AFD12, 0x050E08F9);
	r0 = D(r0, s1_2_0, 0xFE0404F9, 0xF7010501, 0x0BFCF90A, 0xEEFE00FB);
	r1 = D(r1, s1_2_0, 0xFE01FE0C, 0x040400FA, 0xFDFC0501, 0xFEFF00FF);
	r2 = D(r2, s1_2_0, 0xFBFEFF06, 0xF204FAFD, 0x1106FAFE, 0x0603FDF7);
	r3 = D(r3, s1_2_0, 0xFFFF0305, 0x02FFFEFB, 0x05FC0C0B, 0xF8FE01EB);
	r4 = D(r4, s1_2_0, 0x010102FB, 0x07040C04, 0x00020302, 0x0100020E);
	r5 = D(r5, s1_2_0, 0x0A03FCF1, 0x0501F511, 0xFE00FCEF, 0xF9FE1017);
	r6 = D(r6, s1_2_0, 0xF0F50FE9, 0x05FB0701, 0x03FC03F4, 0x06FCF9FE);
	r7 = D(r7, s1_2_0, 0x0304FAF5, 0xFF01FF0A, 0x07060402, 0xFA01FDEF);
	r0 = D(r0, s1_2_1, 0x16FE05FD, 0xF8F6FC15, 0xFDFA0304, 0x090403F5);
	r1 = D(r1, s1_2_1, 0xF4FCEEF6, 0x04F3FA01, 0x1D0601E8, 0x09F8F505);
	r2 = D(r2, s1_2_1, 0x02FFFE02, 0x04F4030A, 0xF0FF09F2, 0xFDF90604);
	r3 = D(r3, s1_2_1, 0x02130B02, 0x01FF03FD, 0xF2F915E6, 0x161903D8);
	r4 = D(r4, s1_2_1, 0xFDFDF109, 0x04FC01F7, 0x070405FD, 0xFF070A04);
	r5 = D(r5, s1_2_1, 0xD6FDFAF5, 0xF9FC0C03, 0xEF01FAFA, 0xFEFFF10F);
	r6 = D(r6, s1_2_1, 0xFC02F7E9, 0xFEFCFFFC, 0xFE0213F8, 0xFF0310E4);
	r7 = D(r7, s1_2_1, 0x0506FEFF, 0xF6FDFF14, 0x2BFA2705, 0x0E0AF9DF);
	r0 = D(r0, s1_2_2, 0x0AFE03FB, 0xF703FC05, 0x0204FEFD, 0xFCFCFE02);
	r1 = D(r1, s1_2_2, 0xFDF60110, 0xFAFF0108, 0xFA060707, 0xFDFC0CFA);
	r2 = D(r2, s1_2_2, 0xFCFF0000, 0xFD01F6FF, 0x0603FBFF, 0xF904FB0B);
	r3 = D(r3, s1_2_2, 0xF300F903, 0x02020300, 0xFDF6FE0D, 0xF9070808);
	r4 = D(r4, s1_2_2, 0x03FD01F4, 0xFAFA0DFE, 0x040004FB, 0x00FD06FD);
	r5 = D(r5, s1_2_2, 0x06E7F304, 0x0400FE00, 0xFBFBF702, 0xF3FD04FA);
	r6 = D(r6, s1_2_2, 0x04FEFF09, 0x0D0611EB, 0xF9F80010, 0xFF050C0B);
	r7 = D(r7, s1_2_2, 0x090006FB, 0xEB14111C, 0x0808FF04, 0x05010100);
	s0_0_0 = G[2][xy.y+0][xy.x+0]; s0_0_1 = G[2][xy.y+0][xy.x+1];
	s0_0_2 = G[2][xy.y+0][xy.x+2]; s0_1_0 = G[2][xy.y+1][xy.x+0];
	s0_1_1 = G[2][xy.y+1][xy.x+1]; s0_1_2 = G[2][xy.y+1][xy.x+2];
	s0_2_0 = G[2][xy.y+2][xy.x+0]; s0_2_1 = G[2][xy.y+2][xy.x+1];
	s0_2_2 = G[2][xy.y+2][xy.x+2]; s1_0_0 = G[3][xy.y+0][xy.x+0];
	s1_0_1 = G[3][xy.y+0][xy.x+1]; s1_0_2 = G[3][xy.y+0][xy.x+2];
	s1_1_0 = G[3][xy.y+1][xy.x+0]; s1_1_1 = G[3][xy.y+1][xy.x+1];
	s1_1_2 = G[3][xy.y+1][xy.x+2]; s1_2_0 = G[3][xy.y+2][xy.x+0];
	s1_2_1 = G[3][xy.y+2][xy.x+1]; s1_2_2 = G[3][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x04030405, 0xFDFE0002, 0x04FC0210, 0x0103FA0D);
	r1 = D(r1, s0_0_0, 0x01FF02FE, 0x01FB03F9, 0x0900FFF0, 0xF90D00FD);
	r2 = D(r2, s0_0_0, 0x07F6FD06, 0x0201F9FD, 0x0A03FF06, 0xFC00FBFD);
	r3 = D(r3, s0_0_0, 0x00FB02FB, 0xF30A06FA, 0x060A01FA, 0x0001FFE8);
	r4 = D(r4, s0_0_0, 0x0303F8FE, 0xFC07F6F9, 0x07FBFF01, 0xFD02FB02);
	r5 = D(r5, s0_0_0, 0xF80707FA, 0x00FD0805, 0x01FD0000, 0xFCFEFBED);
	r6 = D(r6, s0_0_0, 0x00FC080B, 0x05010204, 0xFA0B0BFB, 0xF5FF1409);
	r7 = D(r7, s0_0_0, 0xF8FF01FA, 0xFFF4FEFE, 0xFB05F8F7, 0x05FEFB0E);
	r0 = D(r0, s0_0_1, 0x11FC0E06, 0x05FC140B, 0x0102F2F9, 0xFE030B09);
	r1 = D(r1, s0_0_1, 0x0B0C02F4, 0xF30BFDEE, 0xE2040207, 0xFFFAFF1B);
	r2 = D(r2, s0_0_1, 0x02F6030D, 0x00F7FF09, 0xFE0B08FC, 0xFE000804);
	r3 = D(r3, s0_0_1, 0xF40403EC, 0xF80C03F4, 0xF902EF06, 0x061205F3);
	r4 = D(r4, s0_0_1, 0xF80903FF, 0xFE09F7E4, 0x0501F7FD, 0x09FA0211);
	r5 = D(r5, s0_0_1, 0xFD0408FA, 0xFEF10AF6, 0xFA0808FC, 0x00FF0106);
	r6 = D(r6, s0_0_1, 0xF3FB200D, 0xF8FF0C0A, 0x0CF70DE8, 0x0FFFFEF9);
	r7 = D(r7, s0_0_1, 0x05FD09F4, 0x01F10E07, 0x0306FCFE, 0x0D00FC09);
	r0 = D(r0, s0_0_2, 0x07F808F6, 0xF805F4FD, 0x09F902FF, 0x06FEFDF7);
	r1 = D(r1, s0_0_2, 0x00FA0AF8, 0x0AFE07FC, 0xFE0206F8, 0x07F800E5);
	r2 = D(r2, s0_0_2, 0xFFFC0301, 0x02FDFB05, 0x02EE0903, 0xFAFD0002);
	r3 = D(r3, s0_0_2, 0x03FB0A07, 0x0302FE02, 0xFA070407, 0x03F401FD);
	r4 = D(r4, s0_0_2, 0x09FB0A01, 0xFD0712FF, 0x0702F501, 0xF50310F3);
	r5 = D(r5, s0_0_2, 0xFB040A01, 0xFB01FF04, 0x04FEFE0F, 0xFEFC0006);
	r6 = D(r6, s0_0_2, 0x090BE7FA, 0xFC08F8F5, 0xEA061006, 0x00F31207);
	r7 = D(r7, s0_0_2, 0xFB000303, 0xF7FCF703, 0xFBFF0AF3, 0x05FDFA0A);
	r0 = D(r0, s0_1_0, 0x0400FD08, 0x01FEFC02, 0x11F7EEDE, 0xF5020814);
	r1 = D(r1, s0_1_0, 0x0001ED00, 0x07FFFBDD, 0xFEF9FA03, 0x00060712);
	r2 = D(r2, s0_1_0, 0x04FCFCF9, 0xF90908FF, 0xF3FD15F3, 0x0406F5E5);
	r3 = D(r3, s0_1_0, 0x04030001, 0xFA08070F, 0x07F4FB03, 0xFE0A05EE);
	r4 = D(r4, s0_1_0, 0x0AFAF7E3, 0x0CF5F600, 0xFD010113, 0x0904F1E3);
	r5 = D(r5, s0_1_0, 0x05050502, 0x0C09F514, 0xFFFB01FA, 0x0BF6031C);
	r6 = D(r6, s0_1_0, 0xFE04020B, 0xF8FB0308, 0xFBF60708, 0xF1030D08);
	r7 = D(r7, s0_1_0, 0xF0FB3105, 0x01F5FCFC, 0x0F08F6D5, 0xF6FE090F);
	r0 = D(r0, s0_1_1, 0x1D1B15FE, 0x0404D90E, 0x01F6122A, 0x1F1B070F);
	r1 = D(r1, s0_1_1, 0xEFF41435, 0x020304C8, 0xE0FA0BE7, 0x060EE9E2);
	r2 = D(r2, s0_1_1, 0x00E70F01, 0x3CFEE8EF, 0xF40F0FEE, 0x060000E6);
	r3 = D(r3, s0_1_1, 0x130A1125, 0xF72BF6FB, 0x2D10EEFE, 0x130B24FB);
	r4 = D(r4, s0_1_1, 0xE203FB14, 0x04FF1221, 0x05100303, 0xECDB27E7);
	r5 = D(r5, s0_1_1, 0x1EF50418, 0x09F7160A, 0xEE0304F5, 0x1BFBDC12);
	r6 = D(r6, s0_1_1, 0x0317D2F7, 0x1414D20C, 0x1704F4F4, 0x2E06B7EF);
	r7 = D(r7, s0_1_1, 0x200C140B, 0xF30DDCEC, 0xD5F8211F, 0x221BD307);
	r0 = D(r0, s0_1_2, 0xF1FDEA09, 0x05F2FD04, 0xFBFBEB06, 0xF6FDE801);
	r1 = D(r1, s0_1_2, 0xF302F602, 0x01F9EDFE, 0x02F509FB, 0xFD0A090B);
	r2 = D(r2, s0_1_2, 0xF2FDFC05, 0xF406F601, 0x0BF10212, 0x04F60103);
	r3 = D(r3, s0_1_2, 0xFFF609FB, 0x0E0606F8, 0xFFF9FF00, 0x01FCFFEE);
	r4 = D(r4, s0_1_2, 0xFA010B08, 0xF5F2FB02, 0xFF00F3F6, 0xF5F88106);
	r5 = D(r5, s0_1_2, 0xECFFF900, 0x000102FC, 0x03FFFDFE, 0xF204FA01);
	r6 = D(r6, s0_1_2, 0xEDFAE0FE, 0x0FFEF810, 0xEFFA07E6, 0xF90F0400);
	r7 = D(r7, s0_1_2, 0xFF02EAFF, 0x1004EFF3, 0xEE060DF7, 0xFB05F70C);
	r0 = D(r0, s0_2_0, 0x06FF0007, 0x060003F8, 0xFDFD0004, 0xF4FE0901);
	r1 = D(r1, s0_2_0, 0xFC07020F, 0x01FB0207, 0xFE030CFC, 0x00FF0003);
	r2 = D(r2, s0_2_0, 0x00F7FFFE, 0x04FEF9FB, 0x08FA0203, 0xFFFFFF03);
	r3 = D(r3, s0_2_0, 0x02FBFEFD, 0xFF0807FE, 0xFB0005FF, 0xFE01FBFF);
	r4 = D(r4, s0_2_0, 0xF9040617, 0xFB0FFBFF, 0x02FC0103, 0xF9030100);
	r5 = D(r5, s0_2_0, 0xF60805F9, 0x0004F902, 0x0300FDF9, 0xF80D0AF2);
	r6 = D(r6, s0_2_0, 0xF5010CF3, 0x010202FE, 0xF80305F9, 0xFAF80706);
	r7 = D(r7, s0_2_0, 0xFBFDFBFC, 0x00FCFE07, 0xFA04010B, 0x03FBFD00);
	r0 = D(r0, s0_2_1, 0x04FF020B, 0x05F807F5, 0xE900FBE4, 0xFBFC090D);
	r1 = D(r1, s0_2_1, 0xFA03F901, 0x0208FBE7, 0xFF10FB01, 0xFE0DFB0A);
	r2 = D(r2, s0_2_1, 0x01FA02F7, 0x0C0106F3, 0xFD02F803, 0xFDF403F8);
	r3 = D(r3, s0_2_1, 0xF4FB0CFC, 0xFE08050B, 0x03F903FC, 0x02FC06FA);
	r4 = D(r4, s0_2_1, 0xEF0A05E9, 0xEEFD01FB, 0x07FE0109, 0xFE01FAF4);
	r5 = D(r5, s0_2_1, 0xFA0719C8, 0xF4F8FF01, 0x010208FF, 0xED0012DC);
	r6 = D(r6, s0_2_1, 0xF6F801F9, 0xF2F31107, 0xFB010609, 0x0D05FBF1);
	r7 = D(r7, s0_2_1, 0x07040601, 0x1C0EEDF0, 0xFBEEEF12, 0x0405F410);
	r0 = D(r0, s0_2_2, 0x04FD0A02, 0xFC03FD03, 0xFEFEFEFE, 0x00010703);
	r1 = D(r1, s0_2_2, 0xFF0106F9, 0xFB01F905, 0x03FC0A01, 0xFC06ED05);
	r2 = D(r2, s0_2_2, 0x00FAFFFE, 0x01FCF0FB, 0x07F20103, 0xFD02FDFD);
	r3 = D(r3, s0_2_2, 0xFCFC02FC, 0x0000FE01, 0x000B00FB, 0xFDF908FE);
	r4 = D(r4, s0_2_2, 0x00030503, 0x030B02FD, 0x05FD0104, 0xFE00FF02);
	r5 = D(r5, s0_2_2, 0xE5F5E8EF, 0xFBF90301, 0x06FDF3FA, 0x080500FC);
	r6 = D(r6, s0_2_2, 0x01F40C0B, 0xF7FB090D, 0x02040DF4, 0xFEF9090F);
	r7 = D(r7, s0_2_2, 0x0001FCFE, 0x0E01EBFC, 0x010211FB, 0x0AF50901);
	r0 = D(r0, s1_0_0, 0xFE04F906, 0x09090308, 0xFEFF1308, 0x0100F80D);
	r1 = D(r1, s1_0_0, 0xF6070C05, 0x04050709, 0x0100F3F3, 0xFFFC01FE);
	r2 = D(r2, s1_0_0, 0x010202FE, 0x05010106, 0x05020309, 0xFD030802);
	r3 = D(r3, s1_0_0, 0x01FA00FE, 0x01FEFA01, 0xF6FFFF03, 0xFDFCFE0B);
	r4 = D(r4, s1_0_0, 0xF8F7020A, 0xF801110C, 0x030003FC, 0xFD0D0BFB);
	r5 = D(r5, s1_0_0, 0x01FF0D03, 0x0504F6FF, 0x060304FD, 0x0F04F7FE);
	r6 = D(r6, s1_0_0, 0xF70D11FF, 0x0403F9FD, 0x0500FF07, 0x10020001);
	r7 = D(r7, s1_0_0, 0x11010811, 0x01FEF5FC, 0xFEFCFD08, 0x0300030A);
	r0 = D(r0, s1_0_1, 0xFD050B05, 0x050FF8F9, 0xEEFC18FE, 0x0C050706);
	r1 = D(r1, s1_0_1, 0xEF001904, 0xF4FB0B02, 0x1600EFEE, 0x03020305);
	r2 = D(r2, s1_0_1, 0x0D030906, 0xFE03E4F9, 0xFD04ECFB, 0x150904FD);
	r3 = D(r3, s1_0_1, 0xFF02EEF8, 0xFEF9F1FB, 0xF906F910, 0xF3FFF8FF);
	r4 = D(r4, s1_0_1, 0xF50015FD, 0xEE01FFFA, 0xEE0203FF, 0x07FF1B13);
	r5 = D(r5, s1_0_1, 0xFBFF0203, 0xF3FEF3F4, 0x1200ECFE, 0xF606F8F5);
	r6 = D(r6, s1_0_1, 0x020A271B, 0x07FC1105, 0xEE000B03, 0xDB03C10B);
	r7 = D(r7, s1_0_1, 0xE804D4FE, 0x1308F4F3, 0xF8FBECFF, 0xFEFAFE0B);
	r0 = D(r0, s1_0_2, 0x0FFB0808, 0x09011B0D, 0x05FC1503, 0x00010702);
	r1 = D(r1, s1_0_2, 0x11FF0B04, 0x0801F106, 0xF804FAF9, 0xE5010DF5);
	r2 = D(r2, s1_0_2, 0x0B030102, 0x0202F9FF, 0x06FA0A09, 0x07FB0008);
	r3 = D(r3, s1_0_2, 0xE7FEF504, 0xF7FFF502, 0xFF0E0902, 0xF4F7FA04);
	r4 = D(r4, s1_0_2, 0xFC001805, 0xF5061706, 0xF8FC00FC, 0x05020300);
	r5 = D(r5, s1_0_2, 0x010A0803, 0x09FCF503, 0xFDFDF70F, 0x070509FB);
	r6 = D(r6, s1_0_2, 0x12FA150E, 0x0CF7FD00, 0x1CFDFFFE, 0x0905FB06);
	r7 = D(r7, s1_0_2, 0x07FE0A03, 0xED03E8EF, 0x0207F8FB, 0x03001006);
	r0 = D(r0, s1_1_0, 0xF8F10F0D, 0xFCFD0C13, 0x10FBF701, 0xF4030212);
	r1 = D(r1, s1_1_0, 0x0AF2061A, 0x13FBEFF7, 0xFFD71212, 0xFC030300);
	r2 = D(r2, s1_1_0, 0x010602F6, 0xF00D0401, 0x1500FCFD, 0x08F2FE03);
	r3 = D(r3, s1_1_0, 0x03FEFE01, 0xFE03FE05, 0x0201F50C, 0xF2FC0602);
	r4 = D(r4, s1_1_0, 0xFCF7F7FD, 0x0106080E, 0xFDF706FE, 0x010E0906);
	r5 = D(r5, s1_1_0, 0x00FA0C0D, 0xF914F7F6, 0x0912F7FA, 0xFBFE0508);
	r6 = D(r6, s1_1_0, 0xF9FD1118, 0xFA00080F, 0x09F60913, 0xFBFC0D14);
	r7 = D(r7, s1_1_0, 0xF1FDFB04, 0xF5FE0002, 0xF3F8F3E7, 0xF9F20410);
	r0 = D(r0, s1_1_1, 0x17F1F805, 0x1C11FC02, 0x1F17E103, 0xDDDC0FF9);
	r1 = D(r1, s1_1_1, 0x3A14F20B, 0x1E05E2F6, 0xC7C6100C, 0x0616F906);
	r2 = D(r2, s1_1_1, 0x1508F8FD, 0x08F4F1FF, 0x0AFE020C, 0x03030E04);
	r3 = D(r3, s1_1_1, 0xFDFC0808, 0xF6FE0903, 0x001A0F0C, 0xF6F7FA04);
	r4 = D(r4, s1_1_1, 0x0609D7FD, 0x13F7ED11, 0xFDE60A04, 0xFBE6DD08);
	r5 = D(r5, s1_1_1, 0x12FF0A0A, 0x01FEFE0F, 0xF2FE01FD, 0x18000D04);
	r6 = D(r6, s1_1_1, 0xF0DD0306, 0xF1D30810, 0x0ECBF705, 0xEEF42810);
	r7 = D(r7, s1_1_1, 0x12F814F5, 0xD6FA1113, 0x1A24F1D4, 0xE3EB12F4);
	r0 = D(r0, s1_1_2, 0xE6FB0303, 0xF501F603, 0xED00F409, 0xFB0BFA07);
	r1 = D(r1, s1_1_2, 0x08F5030F, 0x0B00F900, 0x05EA1406, 0xE504F805);
	r2 = D(r2, s1_1_2, 0xFD07FFFF, 0xF703E5EB, 0x070B10FE, 0x0400F9FD);
	r3 = D(r3, s1_1_2, 0x0D05090F, 0x0B010302, 0x0DFEF903, 0x14FD1F01);
	r4 = D(r4, s1_1_2, 0xF9FFFB0F, 0x06FF0C12, 0x0AF40B03, 0xB608FE07);
	r5 = D(r5, s1_1_2, 0x1201F70B, 0xFD03FC02, 0xFD06FBF0, 0x11F5FC09);
	r6 = D(r6, s1_1_2, 0xFB0A1B0A, 0xE7F509FE, 0xD207F0F4, 0xDAEEF70D);
	r7 = D(r7, s1_1_2, 0xF3F8F306, 0x08000CF6, 0x050E37F2, 0xFAF70DFA);
	r0 = D(r0, s1_2_0, 0x0B02FE00, 0x0401F90C, 0xF8FF02FF, 0xFBFC00EB);
	r1 = D(r1, s1_2_0, 0x07F1FD0A, 0xFBF701F6, 0xFDFD000D, 0x01060004);
	r2 = D(r2, s1_2_0, 0xFE070303, 0x09E701FF, 0x06EFF604, 0x050CFF00);
	r3 = D(r3, s1_2_0, 0xF7FC0203, 0x02FDFF01, 0xF504090B, 0x02EEFF02);
	r4 = D(r4, s1_2_0, 0xF4EE06FE, 0xE9F70A0C, 0xFFFF0003, 0x0309000C);
	r5 = D(r5, s1_2_0, 0xFCF70702, 0xFE130306, 0xFBF5FA04, 0x04120114);
	r6 = D(r6, s1_2_0, 0x0B04F8F7, 0x0A0DFA01, 0x09040108, 0xEFEE0413);
	r7 = D(r7, s1_2_0, 0x02080104, 0xFEE5000E, 0xE31001F9, 0xF4F7FDF4);
	r0 = D(r0, s1_2_1, 0xF60F0700, 0xF4E20205, 0xE71E0506, 0x05FF03F7);
	r1 = D(r1, s1_2_1, 0xFA240DFF, 0x03F1FA04, 0x00110205, 0x09FCFD03);
	r2 = D(r2, s1_2_1, 0xF6F5FE02, 0xF513F001, 0xFDFBFE05, 0x04E4FAF8);
	r3 = D(r3, s1_2_1, 0xE30AFF08, 0x1002FF00, 0x07E906F2, 0xF30B02FC);
	r4 = D(r4, s1_2_1, 0xF201FE0A, 0xE107030F, 0x020E03FE, 0xF3010613);
	r5 = D(r5, s1_2_1, 0x050CE808, 0xF5C300F9, 0xFCD1F9FD, 0xF00FFE0C);
	r6 = D(r6, s1_2_1, 0x0EF700F0, 0x0B18FFEC, 0x070903FF, 0x0AD600F3);
	r7 = D(r7, s1_2_1, 0x02E8FE01, 0x0B24FEF6, 0x29DB03FE, 0x03EC06F5);
	r0 = D(r0, s1_2_2, 0x0C020405, 0xF80AF9F9, 0x070500FA, 0x06FBFD06);
	r1 = D(r1, s1_2_2, 0x0801FDFE, 0x08010002, 0x000EFE0A, 0xFFE902FC);
	r2 = D(r2, s1_2_2, 0x02FD0302, 0xE9F501FB, 0xF4EF010D, 0xF70301F7);
	r3 = D(r3, s1_2_2, 0xFB0F00FC, 0xFEF90004, 0xFEFDFA08, 0x04F70802);
	r4 = D(r4, s1_2_2, 0x0E0202FC, 0x100C0AF8, 0x01FE0204, 0x0D050103);
	r5 = D(r5, s1_2_2, 0xAB0311F5, 0x03F7FC04, 0xF7E4FEF6, 0xF70304FB);
	r6 = D(r6, s1_2_2, 0xFD05F209, 0x040B0B05, 0xFEFBFE04, 0xF4FF05F3);
	r7 = D(r7, s1_2_2, 0x0E090600, 0xE0F704FD, 0x0509FAF3, 0xF9FEFCFD);
	s0_0_0 = G[4][xy.y+0][xy.x+0]; s0_0_1 = G[4][xy.y+0][xy.x+1];
	s0_0_2 = G[4][xy.y+0][xy.x+2]; s0_1_0 = G[4][xy.y+1][xy.x+0];
	s0_1_1 = G[4][xy.y+1][xy.x+1]; s0_1_2 = G[4][xy.y+1][xy.x+2];
	s0_2_0 = G[4][xy.y+2][xy.x+0]; s0_2_1 = G[4][xy.y+2][xy.x+1];
	s0_2_2 = G[4][xy.y+2][xy.x+2]; s1_0_0 = G[5][xy.y+0][xy.x+0];
	s1_0_1 = G[5][xy.y+0][xy.x+1]; s1_0_2 = G[5][xy.y+0][xy.x+2];
	s1_1_0 = G[5][xy.y+1][xy.x+0]; s1_1_1 = G[5][xy.y+1][xy.x+1];
	s1_1_2 = G[5][xy.y+1][xy.x+2]; s1_2_0 = G[5][xy.y+2][xy.x+0];
	s1_2_1 = G[5][xy.y+2][xy.x+1]; s1_2_2 = G[5][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x07FAFC03, 0x0408FBF4, 0x12FEFAFE, 0x03FEF4F5);
	r1 = D(r1, s0_0_0, 0x00F6F9F8, 0x0E08FDF3, 0x020B06FA, 0xF8FDF509);
	r2 = D(r2, s0_0_0, 0xFC0201FC, 0x0202FD0C, 0x0D07F602, 0x060FFDF5);
	r3 = D(r3, s0_0_0, 0x07000300, 0x0102FC04, 0x03F3ED04, 0x0AFC0000);
	r4 = D(r4, s0_0_0, 0x12F5FEFD, 0x06FEE704, 0xFBF902FF, 0xFE04FCFE);
	r5 = D(r5, s0_0_0, 0x0506FB08, 0x0FFFF80B, 0x020702FB, 0x05FEF2F9);
	r6 = D(r6, s0_0_0, 0x0410F9F9, 0xFB03FBFD, 0xFF03F407, 0x0808E70B);
	r7 = D(r7, s0_0_0, 0x02FCF400, 0xF902FEF9, 0x01FFFBF9, 0xF5FC0604);
	r0 = D(r0, s0_0_1, 0x150BFD00, 0xFF0602F3, 0x2005FEF8, 0xF2F9FFFB);
	r1 = D(r1, s0_0_1, 0x060DFC08, 0x1704FF11, 0xF107FEF3, 0x06FAFEF4);
	r2 = D(r2, s0_0_1, 0xF80004F1, 0x02FE08FF, 0xF4FCFEF7, 0x02FBF901);
	r3 = D(r3, s0_0_1, 0x0EF60209, 0x06FAFD16, 0x0403EFF0, 0xFCF2050A);
	r4 = D(r4, s0_0_1, 0x1001FF0C, 0x0BE50102, 0xFFF90612, 0xFBFE01F7);
	r5 = D(r5, s0_0_1, 0x0F05FCFE, 0x0D02F803, 0xF5F10101, 0x000303FD);
	r6 = D(r6, s0_0_1, 0xFC10F2F7, 0x050CFCF1, 0x0E0C02FB, 0x16100507);
	r7 = D(r7, s0_0_1, 0x090D0506, 0xF7F8FEFC, 0xFC0D00F6, 0x010705FB);
	r0 = D(r0, s0_0_2, 0x0DFAFCFC, 0x0200FE01, 0x09F9FE05, 0x070AFA01);
	r1 = D(r1, s0_0_2, 0x0903F2FB, 0x0B08FB05, 0xF5FDFFFB, 0x0FF6F105);
	r2 = D(r2, s0_0_2, 0xFE0202FF, 0xF9F9FE00, 0xFE0BF2FD, 0xFC05F902);
	r3 = D(r3, s0_0_2, 0x00030003, 0x0301F500, 0x02FEDF02, 0x0B15FD02);
	r4 = D(r4, s0_0_2, 0x0A0BFE05, 0x08FCE905, 0xFDFD04FE, 0x06FEFB02);
	r5 = D(r5, s0_0_2, 0x0CFFFF05, 0xF9F4F802, 0xF50202FF, 0x06FFF303);
	r6 = D(r6, s0_0_2, 0xFAF5FD07, 0xFBFCF9FE, 0x02EBF9FD, 0xFBFAE2FA);
	r7 = D(r7, s0_0_2, 0xF901EFFD, 0xF6FDFAFC, 0x06FF0103, 0xF9F40CF8);
	r0 = D(r0, s0_1_0, 0xFFFC0305, 0xFEF0FE0C, 0x080C02EF, 0xF1F7FA07);
	r1 = D(r1, s0_1_0, 0xF50BFD0A, 0x060901ED, 0xFE040101, 0x05F7F905);
	r2 = D(r2, s0_1_0, 0xFB0000ED, 0x06F707F9, 0xFBF501F0, 0xF007F7F8);
	r3 = D(r3, s0_1_0, 0x060AFD02, 0xFCFEFE19, 0x210DE4F5, 0xEF0200F5);
	r4 = D(r4, s0_1_0, 0xF81104F0, 0xFD0F01EE, 0xFFFD0314, 0xEF0400EE);
	r5 = D(r5, s0_1_0, 0x02FFF601, 0xDBFFFDEF, 0x020602FE, 0x1601FC04);
	r6 = D(r6, s0_1_0, 0x07E2FAFD, 0x0802F7FB, 0x09FCF2F2, 0x00DD0004);
	r7 = D(r7, s0_1_0, 0x04EDFC07, 0x0801FEFA, 0xF301FBEC, 0xECF5080B);
	r0 = D(r0, s0_1_1, 0xDBF70408, 0x0407060F, 0x07F50356, 0xDBE6FCF2);
	r1 = D(r1, s0_1_1, 0xA3FBF8CB, 0xF80D02E9, 0xEBCE0920, 0xC20702EA);
	r2 = D(r2, s0_1_1, 0xF5FD007F, 0x0E0F0721, 0x0EFE160A, 0x09070111);
	r3 = D(r3, s0_1_1, 0x09F6FBFF, 0x17040781, 0xDAF2F702, 0xC7E1FFE8);
	r4 = D(r4, s0_1_1, 0xD3F602E8, 0xF9FE060F, 0xFA06FBBC, 0xD6D2043D);
	r5 = D(r5, s0_1_1, 0x011FF800, 0x2103FE1E, 0x14FA0206, 0x230F0112);
	r6 = D(r6, s0_1_1, 0xD3E01001, 0xDF07F808, 0xE7041409, 0xD42202F7);
	r7 = D(r7, s0_1_1, 0xE51601F6, 0x20ED0823, 0xD405FEE6, 0xDCF605FE);
	r0 = D(r0, s0_1_2, 0xFC0104F8, 0xFAF3F9FE, 0x0C0E05FD, 0x0301FCFC);
	r1 = D(r1, s0_1_2, 0x04180205, 0x0C12FC07, 0x0401EC01, 0x0FF7F210);
	r2 = D(r2, s0_1_2, 0xFBFB03F2, 0xF3EA0102, 0x03F2FA02, 0x02FBFEFE);
	r3 = D(r3, s0_1_2, 0x130C0201, 0x08FFF40F, 0xF707F1F8, 0x140D0404);
	r4 = D(r4, s0_1_2, 0x0A0EFA0F, 0x030D02F4, 0x0701040A, 0xF6F106F8);
	r5 = D(r5, s0_1_2, 0x04ED01FB, 0xF903FD00, 0xF9F70003, 0xFFF6F5FF);
	r6 = D(r6, s0_1_2, 0x07E901F8, 0xEAF3E9F3, 0xFBDFEAFF, 0xE5E70201);
	r7 = D(r7, s0_1_2, 0xFD01FFFB, 0x0DFAFE04, 0xF10DFA05, 0xEFF30201);
	r0 = D(r0, s0_2_0, 0x0308FB00, 0xFF00FDFC, 0x0AFEF8F6, 0x0501F800);
	r1 = D(r1, s0_2_0, 0xF706F5F1, 0x0902FCFC, 0x02000202, 0xF9FDFAFE);
	r2 = D(r2, s0_2_0, 0x050200FC, 0xF603FF07, 0x0801F206, 0xF901FB0B);
	r3 = D(r3, s0_2_0, 0x03FF02FB, 0xFA02FD04, 0xF7F5ECF9, 0x030EFF03);
	r4 = D(r4, s0_2_0, 0x0DF6FCFD, 0x01F7ED02, 0x00FC0202, 0x0502FBFA);
	r5 = D(r5, s0_2_0, 0x02F9FF06, 0x07F7FCF8, 0x00FF0502, 0x0700EDF7);
	r6 = D(r6, s0_2_0, 0x0216F20E, 0x04FFF300, 0x0605EDFB, 0x09F3F603);
	r7 = D(r7, s0_2_0, 0xFF04F902, 0x02FBFE00, 0xF8FAFEFC, 0xFFFA0706);
	r0 = D(r0, s0_2_1, 0xFEF90001, 0x0DFCFFFF, 0x08E202EC, 0xFD03FA0A);
	r1 = D(r1, s0_2_1, 0xFB07F8F7, 0x040702F4, 0xFCF4FD0C, 0x0A03FB00);
	r2 = D(r2, s0_2_1, 0xFCFC02F3, 0x03FB0B01, 0xFA0600F8, 0x0A00FF01);
	r3 = D(r3, s0_2_1, 0x0BF501FC, 0x0607FE10, 0x1509F901, 0xF7000302);
	r4 = D(r4, s0_2_1, 0xEEE201F4, 0xFDDBF4F7, 0xF501040F, 0xF9E2FFEA);
	r5 = D(r5, s0_2_1, 0x000601E7, 0x0802F900, 0x05010302, 0x0BEEFFE8);
	r6 = D(r6, s0_2_1, 0x1900FEFD, 0x07000203, 0x000FF7FD, 0xEF09F401);
	r7 = D(r7, s0_2_1, 0xFCFDFDF6, 0xF80D08FE, 0xF91A064A, 0xEE030316);
	r0 = D(r0, s0_2_2, 0xFE06FBFD, 0x06FE00FF, 0x00FEF9FE, 0xFBFDFA00);
	r1 = D(r1, s0_2_2, 0x07FCEFFE, 0x090AFDFC, 0xF9FFFA05, 0x0201F6F7);
	r2 = D(r2, s0_2_2, 0xFF010401, 0xF7FE01FE, 0xFDF7EDFE, 0x0000FA00);
	r3 = D(r3, s0_2_2, 0x03EF06FC, 0x0001F7FC, 0xF6F9E101, 0x0302F804);
	r4 = D(r4, s0_2_2, 0x05FBFB01, 0xFFF3ED03, 0x010007FC, 0x0700FEFE);
	r5 = D(r5, s0_2_2, 0x020102FB, 0x03FBFF02, 0xFCF806FB, 0x0200EDFE);
	r6 = D(r6, s0_2_2, 0x0512EFFB, 0xFD07F00A, 0x02EFF503, 0x0B12F3FA);
	r7 = D(r7, s0_2_2, 0x000AF6FE, 0x01F2FBFE, 0xFA000907, 0xF8F608FF);
	r0 = D(r0, s1_0_0, 0x0903FCFD, 0x020AF605, 0x0601F3FF, 0x080609FD);
	r1 = D(r1, s1_0_0, 0x0807FBFE, 0xFF030500, 0x00F4FE01, 0x06F509FE);
	r2 = D(r2, s1_0_0, 0x020400FF, 0x06F90C03, 0x3E07EDF3, 0xFD04F302);
	r3 = D(r3, s1_0_0, 0xF908FAFF, 0xFDFE0800, 0x0003F809, 0x01FBFEFE);
	r4 = D(r4, s1_0_0, 0x0908FF01, 0x011207FC, 0x07000000, 0x0806FEFE);
	r5 = D(r5, s1_0_0, 0x080409FE, 0xFF0F0502, 0x09FBFD02, 0x0A0B00FE);
	r6 = D(r6, s1_0_0, 0x00EFEDFF, 0x00080802, 0x0B070F01, 0x180011FF);
	r7 = D(r7, s1_0_0, 0x0AFB1204, 0x06FBFE00, 0xFD040102, 0xFAF8F7FF);
	r0 = D(r0, s1_0_1, 0x0705F300, 0xF8FAFEF9, 0xFF050108, 0x04FD0B07);
	r1 = D(r1, s1_0_1, 0x0F0BFE00, 0xF60205FE, 0x18E30102, 0x00090603);
	r2 = D(r2, s1_0_1, 0x00FC0CFB, 0x07F8FC05, 0x1902FE0A, 0x00EB0601);
	r3 = D(r3, s1_0_1, 0xFD06FC01, 0x0004FD01, 0x0107FAFE, 0x06E61006);
	r4 = D(r4, s1_0_1, 0x091410FE, 0x020E03FF, 0xFF01FC01, 0x0BF504FE);
	r5 = D(r5, s1_0_1, 0x0E010407, 0x0607EC03, 0x0BF50006, 0x08FEED01);
	r6 = D(r6, s1_0_1, 0x07DEFE0C, 0x0C02FBFF, 0x1306F907, 0x020BD807);
	r7 = D(r7, s1_0_1, 0x01FFFCFF, 0x06F7FA03, 0x020800FD, 0xF6FE0C01);
	r0 = D(r0, s1_0_2, 0x0B0CEEF9, 0xFBFE00FE, 0x02FEF7FA, 0xFD0DECFD);
	r1 = D(r1, s1_0_2, 0x0100DA00, 0xF70203FF, 0x0FFEFE07, 0x09141004);
	r2 = D(r2, s1_0_2, 0x01040804, 0x04FE0301, 0x33FFE0F8, 0xFF03FCFC);
	r3 = D(r3, s1_0_2, 0x04F4F8FE, 0xFF00FE01, 0x0E0AF5F9, 0x0202E304);
	r4 = D(r4, s1_0_2, 0x0D00EC03, 0x0BFDFDFE, 0x0501FB00, 0x09090101);
	r5 = D(r5, s1_0_2, 0x0AFF01FB, 0x00F60E01, 0x0DEF1201, 0x0809F400);
	r6 = D(r6, s1_0_2, 0x040F10F4, 0x010EF8FA, 0x08FD15FB, 0x08E7FEFF);
	r7 = D(r7, s1_0_2, 0x05020301, 0x050608F7, 0x030A0302, 0xF9FCFF00);
	r0 = D(r0, s1_1_0, 0xFF0106FF, 0xF7F7FDF6, 0x1307FD00, 0xE5040DFD);
	r1 = D(r1, s1_1_0, 0x18FC0603, 0x02F50808, 0x090EFFF9, 0x08FBFB04);
	r2 = D(r2, s1_1_0, 0x050706FF, 0xF8F80401, 0xFAFD0901, 0xFE04FEF4);
	r3 = D(r3, s1_1_0, 0x000EFD01, 0xFDFB0101, 0xFF13FA06, 0x04F40AFF);
	r4 = D(r4, s1_1_0, 0x07F9FD03, 0x18F30107, 0x0CFEFEFE, 0x150C0F03);
	r5 = D(r5, s1_1_0, 0x06010C02, 0xFF11F006, 0x0AFC0004, 0x0BF70503);
	r6 = D(r6, s1_1_0, 0x04010302, 0x0406FE01, 0x1A0B0F07, 0xF509F8F8);
	r7 = D(r7, s1_1_0, 0xF6F603F8, 0x08FEFAF3, 0x05090FFB, 0xF8FAF7FB);
	r0 = D(r0, s1_1_1, 0x02020239, 0xF6F70A35, 0x0FFA0C14, 0x05210520);
	r1 = D(r1, s1_1_1, 0x04070B16, 0xF7C00304, 0x0D25F6F3, 0x0712F4FD);
	r2 = D(r2, s1_1_1, 0x0210080C, 0xFD00E214, 0xDB050345, 0xF802FC04);
	r3 = D(r3, s1_1_1, 0xEE05FA16, 0x00F30503, 0xF5F8FF04, 0x01F9FA11);
	r4 = D(r4, s1_1_1, 0x12E7050A, 0x06E01110, 0xF90B04F8, 0x1EFBDB12);
	r5 = D(r5, s1_1_1, 0x0301FF15, 0xEB0E0F13, 0x1AF01612, 0xFA0613FF);
	r6 = D(r6, s1_1_1, 0xE9200AF5, 0xF81D1402, 0xF92C0C13, 0xDEED170D);
	r7 = D(r7, s1_1_1, 0x01F9FD06, 0xE90A03DD, 0xF6BAF9F8, 0xF210001D);
	r0 = D(r0, s1_1_2, 0x02F9FDFE, 0xFD0E0503, 0x0AF50118, 0x00F300DF);
	r1 = D(r1, s1_1_2, 0x0902F710, 0xF4C90A1D, 0xFFD0FBDF, 0x0BFA0E1D);
	r2 = D(r2, s1_1_2, 0x01F60E06, 0x05EF0EFB, 0x0C09FDF2, 0x0601FD00);
	r3 = D(r3, s1_1_2, 0xF816F2FB, 0xFD0EFE04, 0x0DF9ED14, 0xFE10F00C);
	r4 = D(r4, s1_1_2, 0x0D080E2C, 0x09060816, 0x020609F5, 0x0CC60EFD);
	r5 = D(r5, s1_1_2, 0x02021A08, 0x0502FAEF, 0x0107E408, 0x0A020CF6);
	r6 = D(r6, s1_1_2, 0x0617EE11, 0x070018F2, 0x12E20EF3, 0xF3ED1204);
	r7 = D(r7, s1_1_2, 0x06E4FF07, 0xFD0AFAE5, 0xF9E90EFE, 0xF6F604FA);
	r0 = D(r0, s1_2_0, 0x09020106, 0x0902FD00, 0x08F901FB, 0x0905FB03);
	r1 = D(r1, s1_2_0, 0x0BF6FF09, 0x01FFFCFD, 0x12060508, 0x03010601);
	r2 = D(r2, s1_2_0, 0x000300FD, 0x07FE050E, 0x3605F80D, 0xFEF70404);
	r3 = D(r3, s1_2_0, 0xFD0C0401, 0xFDFDFF03, 0x0C030102, 0x09050B01);
	r4 = D(r4, s1_2_0, 0x08FCF9F2, 0x09EAF8FD, 0x0A05FE05, 0x0AFD0101);
	r5 = D(r5, s1_2_0, 0x080109FB, 0xFC01FD01, 0x0801FFFD, 0x02F7120B);
	r6 = D(r6, s1_2_0, 0x0704FC0F, 0x0D000508, 0x13FE0A0D, 0xF91BF70C);
	r7 = D(r7, s1_2_0, 0xFA08FD0B, 0x05FDFF0F, 0xFA09FF02, 0x03FFF607);
	r0 = D(r0, s1_2_1, 0x0607030D, 0xFC0CFAF7, 0x090BF512, 0x01010704);
	r1 = D(r1, s1_2_1, 0x0E18031C, 0x04D404FF, 0x03EBFF15, 0x00F0F8DF);
	r2 = D(r2, s1_2_1, 0x02050007, 0x0505F7E9, 0x10F6FCF1, 0xFFF9061E);
	r3 = D(r3, s1_2_1, 0xF817FD08, 0xF9F9010F, 0x06EA0418, 0x08F6FDF9);
	r4 = D(r4, s1_2_1, 0x0CFEF3CD, 0x06060101, 0x06F402FD, 0x12040AFD);
	r5 = D(r5, s1_2_1, 0x0D04F722, 0xFD03011E, 0x08000000, 0xFA23F71B);
	r6 = D(r6, s1_2_1, 0xF4E30D16, 0x04E80310, 0x04F1040A, 0xF6DF16F4);
	r7 = D(r7, s1_2_1, 0x01EF000E, 0xFE01FA01, 0xE60702F6, 0xF7DBFF03);
	r0 = D(r0, s1_2_2, 0x06FF0009, 0x01F3F9C0, 0x05FDF5A3, 0x000506C2);
	r1 = D(r1, s1_2_2, 0x0405F781, 0xFBF8009E, 0x14FA0956, 0x04EE09C7);
	r2 = D(r2, s1_2_2, 0x020B0230, 0x0604EDB9, 0x2FF7FD49, 0x0702FAC8);
	r3 = D(r3, s1_2_2, 0x0001F881, 0xFBF90619, 0x1DEFFB04, 0xFFEF0E81);
	r4 = D(r4, s1_2_2, 0x10010081, 0x020006C4, 0x08020517, 0x0A0FF5FC);
	r5 = D(r5, s1_2_2, 0x0EE3F4DA, 0x01090081, 0x05F3F5C5, 0xFF0604F2);
	r6 = D(r6, s1_2_2, 0x09D20A6B, 0x08061555, 0x0A140DA6, 0xFCEFE90E);
	r7 = D(r7, s1_2_2, 0x02F9FCDE, 0x0C07FF0D, 0x04F80021, 0xF6010119);
	s0_0_0 = G[6][xy.y+0][xy.x+0]; s0_0_1 = G[6][xy.y+0][xy.x+1];
	s0_0_2 = G[6][xy.y+0][xy.x+2]; s0_1_0 = G[6][xy.y+1][xy.x+0];
	s0_1_1 = G[6][xy.y+1][xy.x+1]; s0_1_2 = G[6][xy.y+1][xy.x+2];
	s0_2_0 = G[6][xy.y+2][xy.x+0]; s0_2_1 = G[6][xy.y+2][xy.x+1];
	s0_2_2 = G[6][xy.y+2][xy.x+2]; s1_0_0 = G[7][xy.y+0][xy.x+0];
	s1_0_1 = G[7][xy.y+0][xy.x+1]; s1_0_2 = G[7][xy.y+0][xy.x+2];
	s1_1_0 = G[7][xy.y+1][xy.x+0]; s1_1_1 = G[7][xy.y+1][xy.x+1];
	s1_1_2 = G[7][xy.y+1][xy.x+2]; s1_2_0 = G[7][xy.y+2][xy.x+0];
	s1_2_1 = G[7][xy.y+2][xy.x+1]; s1_2_2 = G[7][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x01FFFF08, 0x14050912, 0xFF150BFA, 0xF80D1EFD);
	r1 = D(r1, s0_0_0, 0x020C0901, 0x0206F801, 0xF9FBFEFC, 0x01F70B0C);
	r2 = D(r2, s0_0_0, 0x01F80EFD, 0xFC00F908, 0x05048105, 0xFC000103);
	r3 = D(r3, s0_0_0, 0xFCFFABFD, 0x0004F509, 0xFDF7E703, 0xECF0F1F3);
	r4 = D(r4, s0_0_0, 0xF8F30CFF, 0x041422FF, 0xFBF31F00, 0x01F41AFE);
	r5 = D(r5, s0_0_0, 0x010CF604, 0xF80C1FFC, 0x0607F807, 0x0B09A000);
	r6 = D(r6, s0_0_0, 0x0709A6E9, 0x02F90306, 0xFFFAEB01, 0x0E0A3BFD);
	r7 = D(r7, s0_0_0, 0x07F725F6, 0xFEFDACFB, 0x03EFF409, 0x04010EFF);
	r0 = D(r0, s0_0_1, 0xF80106F5, 0xFF10EFF8, 0xF70D14F2, 0xFB010E0E);
	r1 = D(r1, s0_0_1, 0xF7FEF80E, 0xF9000F05, 0xFEF0F9DC, 0x01144BE6);
	r2 = D(r2, s0_0_1, 0x00F30502, 0x03FD02FF, 0x00ED030E, 0xFF07F815);
	r3 = D(r3, s0_0_1, 0xFD01EA00, 0xFFF4F704, 0x12081914, 0xFFF70516);
	r4 = D(r4, s0_0_1, 0xFDFA25FB, 0xFF0510F7, 0xFEED1400, 0xFDC70EE9);
	r5 = D(r5, s0_0_1, 0xFD0C0409, 0x0005EDF0, 0xFF0FF806, 0x00050101);
	r6 = D(r6, s0_0_1, 0xFC0706ED, 0x0105FEF1, 0xFB03FBFB, 0xF0F70AFC);
	r7 = D(r7, s0_0_1, 0xFC060806, 0x0100EBFC, 0x04F70AE2, 0xFFFF14FA);
	r0 = D(r0, s0_0_2, 0x0704FF03, 0x0A0503F7, 0x050A00F8, 0x04FAF901);
	r1 = D(r1, s0_0_2, 0x09FA02F8, 0x0901FB05, 0x06E5F907, 0x070407E1);
	r2 = D(r2, s0_0_2, 0xFFFF0007, 0x06020401, 0x010D04F9, 0x000600F9);
	r3 = D(r3, s0_0_2, 0xFCF7FCF2, 0x06F7FEFA, 0xEA0EFF05, 0x0102F6F0);
	r4 = D(r4, s0_0_2, 0xFE00FF04, 0x0A010200, 0x00FFFA01, 0xFEF80105);
	r5 = D(r5, s0_0_2, 0x0104FDFA, 0xF6FEFE06, 0x010708F4, 0x010D00FB);
	r6 = D(r6, s0_0_2, 0x040EF1FF, 0x02F7FF09, 0x04DE0005, 0x0AFFFF09);
	r7 = D(r7, s0_0_2, 0x10FD0103, 0xFE07FE02, 0x02F5FB09, 0xF90601FE);
	r0 = D(r0, s0_1_0, 0xFC051403, 0xE3FBC0F6, 0x0B0C0CED, 0xF2F4E703);
	r1 = D(r1, s0_1_0, 0xFCF9030E, 0x0BF815FF, 0xFF0210F3, 0xF7F30E09);
	r2 = D(r2, s0_1_0, 0x0B0414FE, 0xF5FEDF05, 0x05028104, 0x190C0115);
	r3 = D(r3, s0_1_0, 0x0601FDEF, 0xF0FDFB09, 0xF816FD0C, 0x00010FE8);
	r4 = D(r4, s0_1_0, 0x02EE16EC, 0xF309DDD0, 0x01FE1CFD, 0x090023DE);
	r5 = D(r5, s0_1_0, 0xF2EF2705, 0x0F0BFBE9, 0xFEFD020A, 0xF9208BF9);
	r6 = D(r6, s0_1_0, 0x07F96606, 0x0B0855FF, 0xF1021505, 0xE3E33FFE);
	r7 = D(r7, s0_1_0, 0xF2FD1F17, 0x02158E03, 0x0BEA14E4, 0xF6F9D304);
	r0 = D(r0, s0_1_1, 0x09FDF208, 0xFDFE09FB, 0x00FF1716, 0xEAFCEFF3);
	r1 = D(r1, s0_1_1, 0x02F4170E, 0x10EE0310, 0x00000516, 0x1E05F800);
	r2 = D(r2, s0_1_1, 0x0A0EFC09, 0x02160003, 0xF3FD36EA, 0xEFFE05F9);
	r3 = D(r3, s0_1_1, 0x0B0A19E7, 0xF6F305F7, 0x0D111808, 0xF8FD3107);
	r4 = D(r4, s0_1_1, 0xFEF52B07, 0xEF0308FF, 0x0C0A0000, 0x1405000F);
	r5 = D(r5, s0_1_1, 0xFCF7E7F1, 0xFCFEF2F1, 0xFFDFE3E8, 0xF619020D);
	r6 = D(r6, s0_1_1, 0x190714DE, 0x02050B04, 0xF203E6F5, 0x970CF100);
	r7 = D(r7, s0_1_1, 0xEC06E913, 0xF92148F8, 0xFFFBFD0C, 0x0F09F9ED);
	r0 = D(r0, s0_1_2, 0xE7FF03FA, 0x0B020900, 0xF509FEFC, 0xFC030303);
	r1 = D(r1, s0_1_2, 0xF4F0F605, 0x03020005, 0xE711FEF8, 0xEAFFFCFF);
	r2 = D(r2, s0_1_2, 0xF6FC0403, 0xF6FD0A08, 0x0404FCFE, 0x11010107);
	r3 = D(r3, s0_1_2, 0x15FDFCFE, 0x1408FC00, 0x1108FD07, 0x1AFFF504);
	r4 = D(r4, s0_1_2, 0xF8F904F9, 0xF600FCF6, 0xFF040402, 0xEAFE0E01);
	r5 = D(r5, s0_1_2, 0x01DE08FF, 0x0BFEFF02, 0x1600FF07, 0x020B00FE);
	r6 = D(r6, s0_1_2, 0xE6EF04E1, 0xE40708F4, 0xD8F4050B, 0x94FD15F7);
	r7 = D(r7, s0_1_2, 0xEAFE02F8, 0x040F040A, 0xF400060B, 0xF7000301);
	r0 = D(r0, s0_2_0, 0xFD00FDF6, 0x040015F2, 0x0B00010D, 0xFB02F1F6);
	r1 = D(r1, s0_2_0, 0x09FF1605, 0x01FE0704, 0xFF06D804, 0xFF010B01);
	r2 = D(r2, s0_2_0, 0xFF000801, 0xF5FF09ED, 0xE900E504, 0xF406EF01);
	r3 = D(r3, s0_2_0, 0x08040400, 0xFDFFF2FE, 0x13FBE80A, 0xF301FD04);
	r4 = D(r4, s0_2_0, 0x04F5F9FF, 0x12FF1F07, 0xFCFE0900, 0x01FD18FF);
	r5 = D(r5, s0_2_0, 0xFFFC3C03, 0xFD021C06, 0xFFFFD503, 0x0A01F206);
	r6 = D(r6, s0_2_0, 0xF208EE0B, 0xFDFF1E00, 0x07F902FA, 0x03032E03);
	r7 = D(r7, s0_2_0, 0x01FF08F5, 0xFD03DB02, 0x06F9B9F8, 0xFEFEBCF5);
	r0 = D(r0, s0_2_1, 0xF6FD09FD, 0x01FFF805, 0x01FCFF01, 0xF9FEFCFD);
	r1 = D(r1, s0_2_1, 0xEFFE09F3, 0x09FF0606, 0x020912F9, 0x02020605);
	r2 = D(r2, s0_2_1, 0x03FE0605, 0x0E040205, 0x1001DFFA, 0x0700FA01);
	r3 = D(r3, s0_2_1, 0xFA00F7FE, 0xFD0501FB, 0xF107F2F7, 0xF9FD04E3);
	r4 = D(r4, s0_2_1, 0x00FC0605, 0x00F71900, 0xFEFE0800, 0x04FF1503);
	r5 = D(r5, s0_2_1, 0xFDFAD702, 0xF804FBFD, 0x0302F901, 0xF8F5F902);
	r6 = D(r6, s0_2_1, 0xF80BF4F8, 0xEEFB0FFA, 0xFA040CF7, 0x04050EFD);
	r7 = D(r7, s0_2_1, 0x0600FDF9, 0x0C07230C, 0x07FE25F5, 0xF5FF00F5);
	r0 = D(r0, s0_2_2, 0x0A0000FE, 0xFB0202FF, 0xF2FB04FF, 0x06020103);
	r1 = D(r1, s0_2_2, 0x05FCFAF8, 0xFB020003, 0x10FFF902, 0xF9FE06FE);
	r2 = D(r2, s0_2_2, 0x0000FE03, 0xFA0304FB, 0xF5010BFD, 0xF50005FE);
	r3 = D(r3, s0_2_2, 0xFCFCF901, 0x02FF01FD, 0xF8FD06FE, 0xFC01FC04);
	r4 = D(r4, s0_2_2, 0x01FEFE02, 0xE8FD0301, 0x0201FD03, 0xFAF905FE);
	r5 = D(r5, s0_2_2, 0xE9EDF7F1, 0xFAFE01FF, 0x02FBFC01, 0xF8F604FB);
	r6 = D(r6, s0_2_2, 0x1DFD0101, 0xF5FBFF00, 0xFEFB04FB, 0x070C0DF8);
	r7 = D(r7, s0_2_2, 0x010105FD, 0xFB040307, 0x0D040410, 0x0FFB02FF);
	r0 = D(r0, s1_0_0, 0xFC080002, 0x05FE0209, 0xF70CFC04, 0x03FF0A00);
	r1 = D(r1, s1_0_0, 0xFD090208, 0x0001F905, 0xF4F8FDFF, 0xF705F201);
	r2 = D(r2, s1_0_0, 0x0DFE0601, 0xFAFAFBF8, 0x06FB0610, 0x03020302);
	r3 = D(r3, s1_0_0, 0x02060502, 0xEC0302FD, 0x0902F00D, 0x0A080B06);
	r4 = D(r4, s1_0_0, 0xFA07FE02, 0x0902FA0D, 0x0EFE0002, 0x00020C03);
	r5 = D(r5, s1_0_0, 0xF90503FF, 0x04050704, 0x04FBFEFF, 0xF80300F8);
	r6 = D(r6, s1_0_0, 0xF306F50D, 0xFF050804, 0xF2090909, 0xF302EEFD);
	r7 = D(r7, s1_0_0, 0x06F8FDFF, 0xFDF4FD03, 0xF6010203, 0x03FEFD06);
	r0 = D(r0, s1_0_1, 0x0109F9FC, 0xFDFEF6EE, 0xFF05FFFF, 0xFAFFF9FB);
	r1 = D(r1, s1_0_1, 0x040B020C, 0x0108F100, 0xFDF2D5F8, 0x0F0A00F8);
	r2 = D(r2, s1_0_1, 0x0CFCFE01, 0xFBF400FA, 0x01FA0101, 0x0302F7F5);
	r3 = D(r3, s1_0_1, 0x01020B05, 0xFA000601, 0x1E020AFD, 0xFB0CF5E9);
	r4 = D(r4, s1_0_1, 0xFE0F0A09, 0xEF0D070B, 0x0DFCFC00, 0xFDF6DCF8);
	r5 = D(r5, s1_0_1, 0xE5080004, 0xFEFA0202, 0x04F80306, 0xF5000800);
	r6 = D(r6, s1_0_1, 0x03FBE306, 0xFEFDFCF7, 0xEBFE0401, 0x10161E03);
	r7 = D(r7, s1_0_1, 0x010B1203, 0xFEF9FEFD, 0xFCFC05FF, 0xFCFDFB02);
	r0 = D(r0, s1_0_2, 0x00030201, 0xFF0004FD, 0xF20BFEFF, 0x0701050A);
	r1 = D(r1, s1_0_2, 0x00FCFDFF, 0x000BFBFF, 0xF6050602, 0xFC03100F);
	r2 = D(r2, s1_0_2, 0x10050106, 0xF7F6FFFC, 0x04090207, 0xFDFB0001);
	r3 = D(r3, s1_0_2, 0x03F1F603, 0xEE0403FD, 0x09070E04, 0x03050006);
	r4 = D(r4, s1_0_2, 0xFD120406, 0xFE040302, 0x11030104, 0x0402FC06);
	r5 = D(r5, s1_0_2, 0xFC0404FD, 0xFDF5FF01, 0x00F1ED05, 0xFC010702);
	r6 = D(r6, s1_0_2, 0xF8FB0402, 0x02070C09, 0xE7ECFAEA, 0xFD0BFDF9);
	r7 = D(r7, s1_0_2, 0x0204FF01, 0x00F90501, 0xF2FD0900, 0x03FBFD02);
	r0 = D(r0, s1_1_0, 0xFE09FCF9, 0xFE11F905, 0xF80605F6, 0x07050203);
	r1 = D(r1, s1_1_0, 0x04170E03, 0xFDFF01FD, 0xF90E00FF, 0xF401F806);
	r2 = D(r2, s1_1_0, 0x0EFA0203, 0xFE0805FF, 0xFC0BF4FE, 0x0A1012E2);
	r3 = D(r3, s1_1_0, 0x01000CF6, 0xF1FFFE04, 0x0A01FE0B, 0x050202F5);
	r4 = D(r4, s1_1_0, 0xF9F303F9, 0x05FD06EE, 0x0F06F501, 0x000F0BFA);
	r5 = D(r5, s1_1_0, 0xF80A000E, 0x040903E0, 0x00080603, 0xF111E905);
	r6 = D(r6, s1_1_0, 0x04F701F3, 0xFF0BF2FD, 0xFB10F215, 0xF500F505);
	r7 = D(r7, s1_1_0, 0x0900FB13, 0x01FE03F9, 0xF60811FC, 0xFE00F102);
	r0 = D(r0, s1_1_1, 0xFB0AFAE2, 0xFDF70001, 0x0604D6FB, 0xF108FBDF);
	r1 = D(r1, s1_1_1, 0xFD13E1DE, 0x0004F3FC, 0x061AF00A, 0x110317CC);
	r2 = D(r2, s1_1_1, 0x0B02FC07, 0x03FA09F5, 0xFA0CF0E9, 0xFCFDF3FA);
	r3 = D(r3, s1_1_1, 0xFE08F3EE, 0x06FC05FE, 0x0904FB9C, 0xEF17E5E4);
	r4 = D(r4, s1_1_1, 0xFD0FEBF1, 0xF10DF7CD, 0x0C090D01, 0xFBFED215);
	r5 = D(r5, s1_1_1, 0xF60806F9, 0x04FA0A03, 0x0706F12D, 0x010FF1F4);
	r6 = D(r6, s1_1_1, 0x0213F7DD, 0xF2131FE0, 0xF0FD13D9, 0x02FA07D3);
	r7 = D(r7, s1_1_1, 0x01F0FAFA, 0xFE12FD14, 0xFBEE0000, 0xFB030BF7);
	r0 = D(r0, s1_1_2, 0xFE0400FA, 0xFD06F4FB, 0xFEFC0CFE, 0x07FD0E09);
	r1 = D(r1, s1_1_2, 0x02F9110D, 0x02070802, 0xFE0BFFFB, 0xF1FF06F2);
	r2 = D(r2, s1_1_2, 0x0A04FC04, 0xFC0101FA, 0xFF020005, 0xFFF6FF01);
	r3 = D(r3, s1_1_2, 0x03FD0004, 0xF7FF01FC, 0x02FCFDF4, 0xFEFB0B07);
	r4 = D(r4, s1_1_2, 0x04FB0E10, 0xFEF6FF0E, 0x0C0BFC06, 0x0208F902);
	r5 = D(r5, s1_1_2, 0x04060605, 0xFB0AF7FF, 0x02010207, 0xFD04F700);
	r6 = D(r6, s1_1_2, 0x00F9DEFB, 0xF0FDD205, 0xF1FCD613, 0xF20AFEE5);
	r7 = D(r7, s1_1_2, 0xFAFE04FF, 0x010EF7FF, 0xF60CFFF9, 0xFEFDFBFE);
	r0 = D(r0, s1_2_0, 0xFA03FFFF, 0xFF0008FC, 0xF4F70603, 0x0406F8FF);
	r1 = D(r1, s1_2_0, 0xF5000903, 0xFFFEF5FF, 0xED09FF01, 0xF20D0302);
	r2 = D(r2, s1_2_0, 0x10000101, 0xFAFAFB01, 0x0509FD09, 0x0103FD06);
	r3 = D(r3, s1_2_0, 0x01030503, 0xE807FEFE, 0x180C0405, 0x0A0EF702);
	r4 = D(r4, s1_2_0, 0xF5F408FF, 0x0BF504ED, 0x1005FFFD, 0x04FC0106);
	r5 = D(r5, s1_2_0, 0xFE0FF50B, 0x08070B0A, 0x01F00301, 0x0CF80BFE);
	r6 = D(r6, s1_2_0, 0xFBF309F9, 0x0FF608FE, 0x0F0E0E00, 0xE116FC03);
	r7 = D(r7, s1_2_0, 0x080CF305, 0x0000FF01, 0xF61D06FE, 0xFF0003F9);
	r0 = D(r0, s1_2_1, 0x03FDFFFC, 0xFFFE0306, 0xFDFDF2EB, 0xF9F40908);
	r1 = D(r1, s1_2_1, 0x03F8FFF9, 0x03FF07FE, 0xF810070E, 0x09060409);
	r2 = D(r2, s1_2_1, 0x1003FE03, 0xFEF70BFD, 0x01FDFF08, 0x00FBF7FE);
	r3 = D(r3, s1_2_1, 0xFD07FAF3, 0xF202FD03, 0x13FC0402, 0xFE0CEDF0);
	r4 = D(r4, s1_2_1, 0xF00A0AF9, 0xFE05F1F2, 0x10000106, 0x03F902F2);
	r5 = D(r5, s1_2_1, 0xF4F709FC, 0x06EFFEF8, 0xFEEEF007, 0x040BF9E7);
	r6 = D(r6, s1_2_1, 0xE3FFE912, 0x0C00F50F, 0xF2F3FBF0, 0x141111EF);
	r7 = D(r7, s1_2_1, 0x06030503, 0x0106F5FC, 0xFD0203FC, 0xFE00FE05);
	r0 = D(r0, s1_2_2, 0x03FB0301, 0x0406F800, 0xF602FC02, 0xFAFA0205);
	r1 = D(r1, s1_2_2, 0x08FA0902, 0x0204FA02, 0xEC05FE03, 0xFE06F8FA);
	r2 = D(r2, s1_2_2, 0x0EFE0204, 0xF4FEE5FE, 0xFE0C0003, 0xFE03FBFF);
	r3 = D(r3, s1_2_2, 0x01FF0E04, 0xEC0502FE, 0x0602EC01, 0x00FD1A00);
	r4 = D(r4, s1_2_2, 0xFEFF0706, 0x0D000509, 0x10FC0603, 0x05F7F808);
	r5 = D(r5, s1_2_2, 0x0404F5F6, 0x01FCFEFE, 0xFE00F804, 0x08FFFC02);
	r6 = D(r6, s1_2_2, 0x01FEFFFF, 0x02F80FFB, 0xF402F0FC, 0xFFF4E50E);
	r7 = D(r7, s1_2_2, 0x02F9FA06, 0xFF07F0EE, 0xFC0AF8FD, 0x02FC0300);
	f0 = vec4(r0) * 6.2000124e-05;
	f0 += vec4(-2.190e-02, -1.602e-02, -1.157e-02, -2.219e-02);
	f0 = clamp(f0, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 0), f0);
	f1 = vec4(r1) * 6.2000124e-05;
	f1 += vec4(6.430e-03, 2.005e-02, -1.662e-02, -3.440e-02);
	f1 = clamp(f1, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 0), f1);
	f2 = vec4(r2) * 6.2000124e-05;
	f2 += vec4(-7.049e-03, -3.812e-03, -1.308e-02, -2.498e-02);
	f2 = clamp(f2, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 1), f2);
	f3 = vec4(r3) * 6.2000124e-05;
	f3 += vec4(-4.745e-03, -8.251e-03, -6.149e-02, -1.208e-02);
	f3 = clamp(f3, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 1), f3);
	f4 = vec4(r4) * 6.2000124e-05;
	f4 += vec4(-7.906e-03, -1.905e-02, 4.646e-03, 2.949e-02);
	f4 = clamp(f4, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 0), f4);
	f5 = vec4(r5) * 6.2000124e-05;
	f5 += vec4(-1.210e-02, -2.692e-02, 4.526e-03, -4.219e-02);
	f5 = clamp(f5, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 0), f5);
	f6 = vec4(r6) * 6.2000124e-05;
	f6 += vec4(-3.696e-02, -3.480e-02, -1.900e-02, -4.332e-02);
	f6 = clamp(f6, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 1), f6);
	f7 = vec4(r7) * 6.2000124e-05;
	f7 += vec4(-3.137e-02, -1.670e-02, 5.770e-03, -1.624e-02);
	f7 = clamp(f7, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 1), f7);
}

//!DESC [CuNNy_8x32_DS_vk] -conv8
//!HOOK LUMA
//!COMPUTE 32 16 8 8
//!BIND conv7
//!BIND LUMA
//!SAVE conv8
//!WIDTH LUMA.w 4 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_spirv_intrinsics : require
spirv_instruction (extensions = ["SPV_KHR_integer_dot_product"], capabilities = [6019, 6018], id = 4450)
int dp4(int a, int b, spirv_literal int fmt);
#define D(r, s, a, b, c, d) r + ivec4(dp4(s, a, 0), dp4(s, b, 0), dp4(s, c, 0), dp4(s, d, 0))
shared int G[8][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(4, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			vec2 p;
			vec4 r, g, b, a;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(1, 1)) * conv7_pt;
			r = conv7_gather(p, 0);
			g = conv7_gather(p, 1);
			b = conv7_gather(p, 2);
			a = conv7_gather(p, 3);
			vec4 v0 = vec4(r.w, g.w, b.w, a.w) * 1.0000000e+00;
			vec4 v1 = vec4(r.z, g.z, b.z, a.z) * 1.0000000e+00;
			vec4 v2 = vec4(r.x, g.x, b.x, a.x) * 1.0000000e+00;
			vec4 v3 = vec4(r.y, g.y, b.y, a.y) * 1.0000000e+00;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(3, 1)) * conv7_pt;
			r = conv7_gather(p, 0);
			g = conv7_gather(p, 1);
			b = conv7_gather(p, 2);
			a = conv7_gather(p, 3);
			vec4 v4 = vec4(r.w, g.w, b.w, a.w) * 1.0000000e+00;
			vec4 v5 = vec4(r.z, g.z, b.z, a.z) * 1.0000000e+00;
			vec4 v6 = vec4(r.x, g.x, b.x, a.x) * 1.0000000e+00;
			vec4 v7 = vec4(r.y, g.y, b.y, a.y) * 1.0000000e+00;
			G[0][ay][ax] = int(packSnorm4x8(v0));
			G[1][ay][ax] = int(packSnorm4x8(v1));
			G[2][ay][ax] = int(packSnorm4x8(v2));
			G[3][ay][ax] = int(packSnorm4x8(v3));
			G[4][ay][ax] = int(packSnorm4x8(v4));
			G[5][ay][ax] = int(packSnorm4x8(v5));
			G[6][ay][ax] = int(packSnorm4x8(v6));
			G[7][ay][ax] = int(packSnorm4x8(v7));
		}
	}
	barrier();
	int s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;
	ivec4 r0, r1, r2, r3, r4, r5, r6, r7;
	vec4 f0, f1, f2, f3, f4, f5, f6, f7;
	r0 = ivec4(0); r1 = ivec4(0); r2 = ivec4(0); r3 = ivec4(0); r4 = ivec4(0); r5 = ivec4(0); r6 = ivec4(0); r7 = ivec4(0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2]; s1_0_0 = G[1][xy.y+0][xy.x+0];
	s1_0_1 = G[1][xy.y+0][xy.x+1]; s1_0_2 = G[1][xy.y+0][xy.x+2];
	s1_1_0 = G[1][xy.y+1][xy.x+0]; s1_1_1 = G[1][xy.y+1][xy.x+1];
	s1_1_2 = G[1][xy.y+1][xy.x+2]; s1_2_0 = G[1][xy.y+2][xy.x+0];
	s1_2_1 = G[1][xy.y+2][xy.x+1]; s1_2_2 = G[1][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x0305FF08, 0x0DFDFB07, 0x00F701F9, 0xFE04FE01);
	r1 = D(r1, s0_0_0, 0x03FF0000, 0x1208FD02, 0xFF02FEFC, 0x0504FE00);
	r2 = D(r2, s0_0_0, 0x01FEFF01, 0xE9F9F9F6, 0xFDFEFE01, 0x010001FE);
	r3 = D(r3, s0_0_0, 0xFFFB0103, 0xFE0401FF, 0x03FB03FD, 0x04FB0202);
	r4 = D(r4, s0_0_0, 0x10F8FE01, 0x0601FFFB, 0x03FFFF02, 0x050002FF);
	r5 = D(r5, s0_0_0, 0x020000FF, 0x0B030601, 0x02FFFF02, 0xFD000101);
	r6 = D(r6, s0_0_0, 0x060101F7, 0xFD00FF02, 0x0401FEFF, 0xE804FD05);
	r7 = D(r7, s0_0_0, 0x07010204, 0x02FC0003, 0xF4FFFFFE, 0x05FC080A);
	r0 = D(r0, s0_0_1, 0xF508FF06, 0x09FCF407, 0x1815FA0A, 0x0402FB00);
	r1 = D(r1, s0_0_1, 0x06FF0200, 0x0AFFEC1E, 0xFC01F8F9, 0x07F9FB05);
	r2 = D(r2, s0_0_1, 0xF4FEFEFF, 0xFD05FD11, 0x08FFFFFC, 0xFA070600);
	r3 = D(r3, s0_0_1, 0x0D050109, 0x0CF6FD02, 0x0502F603, 0xFE07FCF9);
	r4 = D(r4, s0_0_1, 0x00040103, 0x03FBFAFD, 0x01FDFF07, 0xF1040206);
	r5 = D(r5, s0_0_1, 0x03FF0102, 0xEF060307, 0x0F03FEFD, 0xFC000001);
	r6 = D(r6, s0_0_1, 0xFEFAF601, 0x06FCFE02, 0x16F50511, 0xF907F810);
	r7 = D(r7, s0_0_1, 0xFA020205, 0x03FF0007, 0x0001F8FD, 0x0C05090D);
	r0 = D(r0, s0_0_2, 0xF8FDFA0C, 0x00FD0A13, 0x0A00F104, 0xF302F704);
	r1 = D(r1, s0_0_2, 0xFD01FE03, 0xEA818181, 0xFDFEFD02, 0xF8FF0107);
	r2 = D(r2, s0_0_2, 0x00FEFD02, 0xFFF5FE0E, 0xF7FEFC05, 0x100307FD);
	r3 = D(r3, s0_0_2, 0x01FDF7F6, 0xF606010A, 0x0AFCFD06, 0xFDFDFC05);
	r4 = D(r4, s0_0_2, 0xF9F9F9FF, 0xFEFFFE0F, 0x01FF0101, 0x08FB0101);
	r5 = D(r5, s0_0_2, 0x040101FF, 0xF2020606, 0xFD010003, 0xFB00FF01);
	r6 = D(r6, s0_0_2, 0x0BFC0301, 0xFBFAFE0D, 0xF900040A, 0x0603FFFE);
	r7 = D(r7, s0_0_2, 0x05FFFF01, 0x03000001, 0xF6000004, 0xE6F90116);
	r0 = D(r0, s0_1_0, 0xFD010104, 0x02030104, 0xFFF7F9F4, 0x070305FE);
	r1 = D(r1, s0_1_0, 0x0100FD02, 0x05FEFAFC, 0xF800F807, 0xFCFCF607);
	r2 = D(r2, s0_1_0, 0x02010209, 0xEF020E0B, 0x0005FFF9, 0xF905FAFF);
	r3 = D(r3, s0_1_0, 0x080307FE, 0xFE03FE04, 0x01FCFF04, 0x01FC0007);
	r4 = D(r4, s0_1_0, 0x05010503, 0xFAF900EE, 0x02F801FE, 0xFE000308);
	r5 = D(r5, s0_1_0, 0xFE0101FB, 0xFEFE0802, 0xFFFFF4FF, 0x0303FC04);
	r6 = D(r6, s0_1_0, 0x010C07F9, 0x02FE0002, 0x0C05F9FC, 0xE906E60D);
	r7 = D(r7, s0_1_0, 0xFC0204FC, 0x040303FD, 0xFD00EA04, 0x05FB0CF2);
	r0 = D(r0, s0_1_1, 0xD011FDFB, 0xFDFA13FA, 0x4301F581, 0x03C926CD);
	r1 = D(r1, s0_1_1, 0xF8060101, 0xF9FEFF0A, 0xFA15FDF9, 0x160603FC);
	r2 = D(r2, s0_1_1, 0x0700FB1E, 0x1EF70207, 0xF4130A0F, 0x0537E126);
	r3 = D(r3, s0_1_1, 0xF20D05FB, 0x1205FBFE, 0x1907F2F9, 0x1DFBEE05);
	r4 = D(r4, s0_1_1, 0xFCF3100E, 0x17F90332, 0x24F5F719, 0x20F4EAE7);
	r5 = D(r5, s0_1_1, 0xF7F6FDF8, 0x05F8060B, 0xD1FA0813, 0x0903E0FE);
	r6 = D(r6, s0_1_1, 0x160AFFFE, 0xE3F30109, 0xEDF3100C, 0x250C05C7);
	r7 = D(r7, s0_1_1, 0x12FA00EE, 0x26FBE809, 0x16F501FE, 0xEE0511EB);
	r0 = D(r0, s0_1_2, 0x100A0C14, 0xEA0BDF2A, 0x2FE5E008, 0xF9FF0DF6);
	r1 = D(r1, s0_1_2, 0x15FDFA08, 0x1912E221, 0x040001F3, 0x09F8FB04);
	r2 = D(r2, s0_1_2, 0xD4FFF312, 0xF7FAFD01, 0xF7050108, 0xF808F809);
	r3 = D(r3, s0_1_2, 0xEEFF041B, 0x1FF9010D, 0x08FE05FE, 0x0DFE0006);
	r4 = D(r4, s0_1_2, 0x00F7141A, 0xF7FBF701, 0xF4FF0102, 0xDBFD0512);
	r5 = D(r5, s0_1_2, 0x03FFFD00, 0x0A000206, 0xFFFDF502, 0x03FF09F8);
	r6 = D(r6, s0_1_2, 0x06FFFAEE, 0xD8FEF21C, 0x28F8EA12, 0xEA06F7FD);
	r7 = D(r7, s0_1_2, 0xF501020B, 0xFB000403, 0xFA01F803, 0xD50A19F7);
	r0 = D(r0, s0_2_0, 0xFD09FC03, 0x08020102, 0x0503F0FD, 0x02050A02);
	r1 = D(r1, s0_2_0, 0x000000FF, 0x00010101, 0xFEFDFB02, 0x08FBFEFF);
	r2 = D(r2, s0_2_0, 0x010108FD, 0xFF02FC06, 0xFD06FE06, 0x0000FBFF);
	r3 = D(r3, s0_2_0, 0xFB030101, 0xFD02FE00, 0x01030301, 0xFF000600);
	r4 = D(r4, s0_2_0, 0x00F5130E, 0xF404090C, 0x0500FBFD, 0x04FC07FF);
	r5 = D(r5, s0_2_0, 0xFE05FC06, 0x02000DFE, 0xFF010000, 0x0104FCFF);
	r6 = D(r6, s0_2_0, 0xFC00FE00, 0x02FEFEFD, 0xFF02FD03, 0xE9EDE12E);
	r7 = D(r7, s0_2_0, 0x02070906, 0xFC030201, 0xFC0000FD, 0x01000200);
	r0 = D(r0, s0_2_1, 0x020DF709, 0x1906F3FC, 0x1616C706, 0x1106FFFF);
	r1 = D(r1, s0_2_1, 0x0AFC08FE, 0x00FD0403, 0xFE080905, 0xF3010306);
	r2 = D(r2, s0_2_1, 0xF4F21EF5, 0x0DFB01FE, 0x09030E02, 0xF900FEFA);
	r3 = D(r3, s0_2_1, 0xFE01050C, 0x0301FBFE, 0x01FD01FB, 0x0202F8F8);
	r4 = D(r4, s0_2_1, 0xF80E0A2B, 0x0CFBFEFA, 0x03FFFF05, 0xD806FB0B);
	r5 = D(r5, s0_2_1, 0x0F03FF19, 0xFC020A02, 0x0601EB03, 0xF9FF06F7);
	r6 = D(r6, s0_2_1, 0xE7110402, 0xE8FEF40B, 0x0900F400, 0x19FC0609);
	r7 = D(r7, s0_2_1, 0x12070B08, 0x02FCFFFC, 0xFAFEF000, 0x030404FE);
	r0 = D(r0, s0_2_2, 0xFB07FF07, 0xE9F2F103, 0x17FFCD01, 0x0105FF02);
	r1 = D(r1, s0_2_2, 0xFDFDF7FE, 0x0F0607F9, 0xF103F300, 0x220307FC);
	r2 = D(r2, s0_2_2, 0x02FF0503, 0x02FDFEFF, 0xF004FA03, 0x02FE02FF);
	r3 = D(r3, s0_2_2, 0x0AF80F05, 0x0402F3FC, 0x0205FF08, 0xFCFEF601);
	r4 = D(r4, s0_2_2, 0xE203E8FF, 0xFDFAFCFF, 0xFFFEFF01, 0x00FB0301);
	r5 = D(r5, s0_2_2, 0xFD040009, 0xF0050400, 0x0601FEFC, 0xF5FDF604);
	r6 = D(r6, s0_2_2, 0xF00AFEF8, 0x13FB0702, 0x0CFD0304, 0xFB0CF409);
	r7 = D(r7, s0_2_2, 0xFB010403, 0x0DFDFE04, 0x0300FD02, 0xFE03FE04);
	r0 = D(r0, s1_0_0, 0x050700F6, 0x09FFF8FD, 0x02F0FCF9, 0xFDFFFDFE);
	r1 = D(r1, s1_0_0, 0xFE010000, 0x04080108, 0x00FFFD01, 0x020006F5);
	r2 = D(r2, s1_0_0, 0x00FFFEFF, 0xF2F50C10, 0xFF030000, 0x03FF0400);
	r3 = D(r3, s1_0_0, 0x0CFF0404, 0xFCFF01FA, 0x03FE08FE, 0x11FEFF04);
	r4 = D(r4, s1_0_0, 0x02050103, 0x04FE0BF9, 0x0502FFFF, 0x07FBF802);
	r5 = D(r5, s1_0_0, 0x05010000, 0x03020301, 0x020404FE, 0x0701FD02);
	r6 = D(r6, s1_0_0, 0xFE05050C, 0x000301FC, 0xFBFDFF00, 0x010CF8FA);
	r7 = D(r7, s1_0_0, 0xFD02F906, 0x04030001, 0x000202F8, 0xF5090404);
	r0 = D(r0, s1_0_1, 0x0B0408F0, 0x02FFF6F3, 0xF9F7F303, 0x08FE0605);
	r1 = D(r1, s1_0_1, 0x01010501, 0xFE04FFF0, 0xFEF7FFFC, 0x03F6FB0B);
	r2 = D(r2, s1_0_1, 0x00FFFF0A, 0xFBFA13F7, 0x04010308, 0xFE01F7FA);
	r3 = D(r3, s1_0_1, 0x0C080C09, 0x06030617, 0x03E7E6DE, 0x020100F0);
	r4 = D(r4, s1_0_1, 0x06FB02F9, 0xFFEF1AF0, 0xFDFFFAFA, 0x020A0007);
	r5 = D(r5, s1_0_1, 0xFF0202FB, 0xFF01F9FD, 0xFF020403, 0xFD0503F8);
	r6 = D(r6, s1_0_1, 0xF405FD1C, 0x03FA0102, 0xFD0BEDF6, 0x120AFC02);
	r7 = D(r7, s1_0_1, 0xFE010104, 0xFD04FCFC, 0x02FB04F2, 0x0F08F7FD);
	r0 = D(r0, s1_0_2, 0xFFFCF1E8, 0xFB020004, 0x08FBF307, 0x0105FD00);
	r1 = D(r1, s1_0_2, 0x0302F704, 0xA9818192, 0xFF03F5FE, 0xFE04E3FE);
	r2 = D(r2, s1_0_2, 0xFF00FF06, 0xFF01FD02, 0x00FFFE02, 0xFFFE00FC);
	r3 = D(r3, s1_0_2, 0x03FFF606, 0xFE06EFF9, 0x0101EF01, 0xFFF9FF02);
	r4 = D(r4, s1_0_2, 0x03020105, 0xFE02FD08, 0x01FE0004, 0xFEFFFC03);
	r5 = D(r5, s1_0_2, 0x0001FFFA, 0xFD00FDFE, 0xFF00FC08, 0x0200FBFF);
	r6 = D(r6, s1_0_2, 0xFD040217, 0xFCFEFF03, 0x04FDFA00, 0x030500EA);
	r7 = D(r7, s1_0_2, 0xFFFEFD04, 0x00FFFE02, 0xFF01FFFE, 0x02FDFFF8);
	r0 = D(r0, s1_1_0, 0x0AFDFF00, 0x0C01FEF9, 0x24EEFAF7, 0xE7FFF309);
	r1 = D(r1, s1_1_0, 0x1100FDFD, 0xEE000802, 0x0500FEF5, 0x0AFF0CFA);
	r2 = D(r2, s1_1_0, 0x1B01FCFA, 0x0DE7F000, 0xF1F7F301, 0x220109F9);
	r3 = D(r3, s1_1_0, 0xEEF7EFFD, 0x110106FC, 0x01070D03, 0x24000304);
	r4 = D(r4, s1_1_0, 0xF903F4FA, 0xDEE8FB0A, 0x03FBFDFC, 0x1207FFF2);
	r5 = D(r5, s1_1_0, 0xF70102FA, 0xFF0403F9, 0x11F5F60E, 0x1501FFFA);
	r6 = D(r6, s1_1_0, 0xE808F807, 0xFA030504, 0xFBF6E7FD, 0xCFF2EFED);
	r7 = D(r7, s1_1_0, 0x09F8FBFC, 0x0AFCF704, 0x1BFE04FE, 0x00F4F502);
	r0 = D(r0, s1_1_1, 0x11F30DCF, 0x16FCF501, 0x6381B7EF, 0x0DEA0325);
	r1 = D(r1, s1_1_1, 0xFAF3000A, 0x15F90D08, 0xE7F703D6, 0xF0EFF0FA);
	r2 = D(r2, s1_1_1, 0xFEFFFCE9, 0x05F9FBFB, 0x01FA01E9, 0x040EEEEB);
	r3 = D(r3, s1_1_1, 0xD7D3ECDA, 0xF4D8D319, 0x07F7FC02, 0xDCF7FEE9);
	r4 = D(r4, s1_1_1, 0xFC000EFB, 0x0DE9F0FE, 0xFA00FAE7, 0xFAD909EE);
	r5 = D(r5, s1_1_1, 0x00F60305, 0x0BEBFDFD, 0x17AA07FE, 0xF8F708F5);
	r6 = D(r6, s1_1_1, 0x1BEAF9C4, 0x03F601F7, 0x25FB12FF, 0x08F43AF4);
	r7 = D(r7, s1_1_1, 0x09F400DC, 0x03F401D6, 0x11F508D9, 0xF1EEE0F6);
	r0 = D(r0, s1_1_2, 0x09F606E3, 0xF9F1EBD6, 0x00D81BEE, 0x02030F09);
	r1 = D(r1, s1_1_2, 0x02FAFE02, 0x06E0FAFB, 0x02F3FE06, 0x0AE3F616);
	r2 = D(r2, s1_1_2, 0xFFFF00F4, 0x0300FBFD, 0xFEF90906, 0xFE02F5F7);
	r3 = D(r3, s1_1_2, 0xF7E30FFB, 0x01F71211, 0x03EB05FC, 0x05F90C06);
	r4 = D(r4, s1_1_2, 0xFA0701F3, 0x0201FBFA, 0x0000FE01, 0x0203020A);
	r5 = D(r5, s1_1_2, 0xFFFFFEEE, 0xFC0601FB, 0x0002FF0E, 0x07FC07EE);
	r6 = D(r6, s1_1_2, 0xFD04EF1C, 0x0000F3F9, 0xFA03F6F8, 0xFD0F00E1);
	r7 = D(r7, s1_1_2, 0x01FC0702, 0x0201FC05, 0xFFFE03FC, 0x07EEF808);
	r0 = D(r0, s1_2_0, 0x0DFCFCF9, 0x0802FF03, 0x1AF30505, 0x0302F206);
	r1 = D(r1, s1_2_0, 0x03000000, 0x0C01F6F9, 0xF8000608, 0x0100FD03);
	r2 = D(r2, s1_2_0, 0xFAFDF7FB, 0xFDFA00FE, 0xF3FB0B04, 0x01FE05FD);
	r3 = D(r3, s1_2_0, 0xDDFA090C, 0x00020403, 0x0DFF0203, 0x0B000503);
	r4 = D(r4, s1_2_0, 0x1E09D218, 0x08F50000, 0xFCFEFE02, 0xFFF0EF02);
	r5 = D(r5, s1_2_0, 0x17FA05F7, 0x0900EDFE, 0xFE0000FE, 0x03FE07FE);
	r6 = D(r6, s1_2_0, 0xFF060501, 0xFDFEF2FE, 0xFF030400, 0xF7F500B4);
	r7 = D(r7, s1_2_0, 0x02F8FF01, 0x0DFBFF03, 0x0EFF0304, 0x01FEFF03);
	r0 = D(r0, s1_2_1, 0x16F9FB04, 0x10F4D9F7, 0x2CBF0307, 0x0105F103);
	r1 = D(r1, s1_2_1, 0x07F7F302, 0xF7FF03FB, 0xFEF900FB, 0x15FD0CFF);
	r2 = D(r2, s1_2_1, 0xEAFCF8D0, 0x02010808, 0x00F901FE, 0x08FB09FB);
	r3 = D(r3, s1_2_1, 0x12FA14FE, 0x03FCFC01, 0x0101FDFF, 0x09F9F303);
	r4 = D(r4, s1_2_1, 0x31D3AF02, 0x10020D02, 0xFFFCFEFE, 0x1BE70201);
	r5 = D(r5, s1_2_1, 0x10E10B03, 0xF701F8FF, 0x0DF9FB01, 0xF601F7F7);
	r6 = D(r6, s1_2_1, 0xEBBFFF02, 0x10FB0E01, 0x02F8F204, 0xFAF6E59D);
	r7 = D(r7, s1_2_1, 0xFAF9FA01, 0x09FEFC00, 0xEEFBFDFD, 0x07F905FF);
	r0 = D(r0, s1_2_2, 0x01FF01F3, 0x03F5F5F3, 0x07F8FBF7, 0x07060006);
	r1 = D(r1, s1_2_2, 0x07FD0102, 0x08F805EF, 0x01F7FEFF, 0x05F4F8F6);
	r2 = D(r2, s1_2_2, 0xFDFB01F7, 0xFEFF02FF, 0xFEFBF8FB, 0xFBFF01FE);
	r3 = D(r3, s1_2_2, 0x06FFFB03, 0x05FD0102, 0x03FDFEFA, 0xFF050100);
	r4 = D(r4, s1_2_2, 0x00FD0D00, 0xFCFC0003, 0xFF00FF01, 0x0604FF02);
	r5 = D(r5, s1_2_2, 0x01F6FFFC, 0xFEFC03FF, 0x0001FF02, 0x02FF04FE);
	r6 = D(r6, s1_2_2, 0xFC000100, 0xFFFFFEFE, 0xFBFFFC02, 0x0705F4F1);
	r7 = D(r7, s1_2_2, 0x00FEFAFE, 0xFC0100FF, 0xFF000201, 0x00FEFAFC);
	s0_0_0 = G[2][xy.y+0][xy.x+0]; s0_0_1 = G[2][xy.y+0][xy.x+1];
	s0_0_2 = G[2][xy.y+0][xy.x+2]; s0_1_0 = G[2][xy.y+1][xy.x+0];
	s0_1_1 = G[2][xy.y+1][xy.x+1]; s0_1_2 = G[2][xy.y+1][xy.x+2];
	s0_2_0 = G[2][xy.y+2][xy.x+0]; s0_2_1 = G[2][xy.y+2][xy.x+1];
	s0_2_2 = G[2][xy.y+2][xy.x+2]; s1_0_0 = G[3][xy.y+0][xy.x+0];
	s1_0_1 = G[3][xy.y+0][xy.x+1]; s1_0_2 = G[3][xy.y+0][xy.x+2];
	s1_1_0 = G[3][xy.y+1][xy.x+0]; s1_1_1 = G[3][xy.y+1][xy.x+1];
	s1_1_2 = G[3][xy.y+1][xy.x+2]; s1_2_0 = G[3][xy.y+2][xy.x+0];
	s1_2_1 = G[3][xy.y+2][xy.x+1]; s1_2_2 = G[3][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x00040003, 0xF50DF500, 0x00FDE501, 0x010102F7);
	r1 = D(r1, s0_0_0, 0x00030101, 0x050901EE, 0xFF03FF01, 0x0202FD01);
	r2 = D(r2, s0_0_0, 0xFC03FF03, 0xF409020D, 0xFF02F904, 0xFC0506F7);
	r3 = D(r3, s0_0_0, 0xFA05FB05, 0xFF00FEFF, 0x040302FA, 0x0201FEFC);
	r4 = D(r4, s0_0_0, 0x01050200, 0xF801FF07, 0xF9040100, 0x0202FEFC);
	r5 = D(r5, s0_0_0, 0xFE02FF00, 0x020000FE, 0x020407FD, 0x020505FE);
	r6 = D(r6, s0_0_0, 0xF708FBFB, 0xF901FD00, 0xFC030004, 0xFE0E03F8);
	r7 = D(r7, s0_0_0, 0x0201FF03, 0x010301FF, 0xF805FF03, 0x0004FD02);
	r0 = D(r0, s0_0_1, 0xF004FF03, 0xF507FE02, 0x050427F1, 0xF102FD0A);
	r1 = D(r1, s0_0_1, 0x08000202, 0xECFD2B16, 0xFA06F30E, 0x0602FC0C);
	r2 = D(r2, s0_0_1, 0x0600FF00, 0x0207FEFB, 0x01FFF905, 0x0E050DEC);
	r3 = D(r3, s0_0_1, 0xFBFFF202, 0x05070808, 0xF80DF90F, 0xF7090501);
	r4 = D(r4, s0_0_1, 0xFF03F804, 0xF7060211, 0xFDFFFEFD, 0x06FF03FA);
	r5 = D(r5, s0_0_1, 0xFE0100FE, 0xFBFCFFF7, 0x0003FA07, 0xFD04FDFF);
	r6 = D(r6, s0_0_1, 0x0301F600, 0xF8030105, 0x01FE09FA, 0x0B0601FB);
	r7 = D(r7, s0_0_1, 0xFBFF01FE, 0xFD01FDFD, 0x0B05F402, 0xE5FC06F5);
	r0 = D(r0, s0_0_2, 0xF402FE05, 0xDFFBFFFE, 0xF200F8F6, 0x030909FB);
	r1 = D(r1, s0_0_2, 0xFB04FBFF, 0x81818181, 0xFE020200, 0x0402FFF9);
	r2 = D(r2, s0_0_2, 0xFB02F603, 0x0501FDFF, 0x03040000, 0xF80100F6);
	r3 = D(r3, s0_0_2, 0xFC09F805, 0x0AFDF2FB, 0xFA0003FE, 0x1006FC07);
	r4 = D(r4, s0_0_2, 0x04060CF8, 0xFF03FEF9, 0xFE01FC01, 0xFE02FB06);
	r5 = D(r5, s0_0_2, 0xFA03FEFF, 0xE403F9FC, 0x02020000, 0x0C03FC01);
	r6 = D(r6, s0_0_2, 0xF80607FB, 0xFD01FEFE, 0xEB00EBFE, 0xF808F3ED);
	r7 = D(r7, s0_0_2, 0xFC02FFFF, 0x0301FA00, 0x02FF0202, 0xF9FFE909);
	r0 = D(r0, s0_1_0, 0xFA03FA01, 0xFB05F700, 0xFD070604, 0xF7FD0009);
	r1 = D(r1, s0_1_0, 0x0401FE01, 0xFA06FB01, 0xFD0500F9, 0x08FB08F4);
	r2 = D(r2, s0_1_0, 0x0100F801, 0x050314FF, 0x0002FF02, 0x040B07E8);
	r3 = D(r3, s0_1_0, 0xFC05FEFD, 0xFEFE03FF, 0xFBFE01F9, 0xFC0101FB);
	r4 = D(r4, s0_1_0, 0x010403EC, 0xFC081B15, 0x0303FB09, 0xFE0201FB);
	r5 = D(r5, s0_1_0, 0xFC04FC02, 0xF503FA03, 0xFC040301, 0x040605F9);
	r6 = D(r6, s0_1_0, 0xF50810F9, 0xFA01F90A, 0xFF01FF04, 0x04040201);
	r7 = D(r7, s0_1_0, 0xFE01FB01, 0xFD030202, 0xD10804F3, 0x07010104);
	r0 = D(r0, s0_1_1, 0x0A10112B, 0x0705F613, 0x201F133B, 0x061AE9A5);
	r1 = D(r1, s0_1_1, 0xDF0800FF, 0xF702F207, 0xF306FDFB, 0xC705FF00);
	r2 = D(r2, s0_1_1, 0xD8FCF1F1, 0x1905FE04, 0xEEFC03FC, 0xD8F31D70);
	r3 = D(r3, s0_1_1, 0x030211FC, 0x00080603, 0x0A020BF9, 0x270EF609);
	r4 = D(r4, s0_1_1, 0xD6FFF204, 0x0D0BF9F4, 0x050004F5, 0x150E0C1D);
	r5 = D(r5, s0_1_1, 0x1202F90A, 0x1603EEFF, 0x2107FB0C, 0x210AFC01);
	r6 = D(r6, s0_1_1, 0x1B06F005, 0x05FE1404, 0x0604FC0C, 0x070B0E13);
	r7 = D(r7, s0_1_1, 0x0D010902, 0x3607FE03, 0x180AEC12, 0x15080504);
	r0 = D(r0, s0_1_2, 0xEE090200, 0xED0708F3, 0xE4072DF8, 0xED09230E);
	r1 = D(r1, s0_1_2, 0x3402F709, 0x1FF7F8F9, 0xE208000E, 0xF10BF70C);
	r2 = D(r2, s0_1_2, 0x1706F501, 0xF704FD02, 0xF403F9FD, 0x1402EFE6);
	r3 = D(r3, s0_1_2, 0xF405ED00, 0xC8020107, 0xE305F70C, 0xE6060606);
	r4 = D(r4, s0_1_2, 0xE609EBF1, 0x000000FF, 0x040001FF, 0xF402FE01);
	r5 = D(r5, s0_1_2, 0xF806F701, 0x0A0BF204, 0x06020601, 0x020A060D);
	r6 = D(r6, s0_1_2, 0x05030CF9, 0x0FFEFCF2, 0x060607F7, 0x010A0EF2);
	r7 = D(r7, s0_1_2, 0x0103FA01, 0x06FF02FF, 0xF803FE01, 0xEE070202);
	r0 = D(r0, s0_2_0, 0xFB070705, 0xF705FEFE, 0xF805FBF9, 0x040400FC);
	r1 = D(r1, s0_2_0, 0x060302FE, 0x010704FB, 0xFA070100, 0xFD0AF804);
	r2 = D(r2, s0_2_0, 0x0602FA04, 0x07FFFCFA, 0xF90000F9, 0xF90701F6);
	r3 = D(r3, s0_2_0, 0xF50200F8, 0x020201FB, 0xFF04FCFE, 0x0301FCFD);
	r4 = D(r4, s0_2_0, 0x05FACC0C, 0x0304FEF8, 0xFF020200, 0x0A050406);
	r5 = D(r5, s0_2_0, 0xFAFE0100, 0x05030105, 0x0204FEFE, 0x0405FD00);
	r6 = D(r6, s0_2_0, 0xF1040AFD, 0x01010204, 0xFF00FDFC, 0xEF0D08E0);
	r7 = D(r7, s0_2_0, 0xEBFF01FF, 0x080300FC, 0xF808FB02, 0xFD03FA00);
	r0 = D(r0, s0_2_1, 0xE60808FB, 0xFB06FD04, 0x03FBFEED, 0xFF020213);
	r1 = D(r1, s0_2_1, 0x0606FC0A, 0x03FF03FE, 0xFC03FBF6, 0xF7FD07F5);
	r2 = D(r2, s0_2_1, 0x0C07F117, 0xFA04FD02, 0x0700F9F5, 0x020208E6);
	r3 = D(r3, s0_2_1, 0x0EFEF7FC, 0xF900F800, 0x0303FF00, 0x0D06FB07);
	r4 = D(r4, s0_2_1, 0x0408D7FA, 0x1003FCFE, 0xF80102FF, 0xEE0201FD);
	r5 = D(r5, s0_2_1, 0x01FEF3F3, 0xF104FE0B, 0xFD03FC00, 0x0D0AFB0D);
	r6 = D(r6, s0_2_1, 0xFA05F8FA, 0xF60307FF, 0xF401FC05, 0xF003F512);
	r7 = D(r7, s0_2_1, 0x05FFF4FF, 0xFA05FD08, 0x0806FC02, 0xFE02FFFB);
	r0 = D(r0, s0_2_2, 0x0B0207FD, 0xE00DFD10, 0x170407F4, 0x120202FF);
	r1 = D(r1, s0_2_2, 0xDF030500, 0xFE08F6FF, 0xF407FB02, 0x0F0AFEFF);
	r2 = D(r2, s0_2_2, 0xEF07F805, 0xFE040100, 0xFC04FCFF, 0xEE0702F3);
	r3 = D(r3, s0_2_2, 0x020301FB, 0xFA05FE00, 0xFB05FCFC, 0x0102FF00);
	r4 = D(r4, s0_2_2, 0xE90BE40B, 0xFB04FE06, 0xFC01FF00, 0x010701FD);
	r5 = D(r5, s0_2_2, 0x0002FDFE, 0x0103FE01, 0xFD01FFFE, 0x0BFF0403);
	r6 = D(r6, s0_2_2, 0xEA08FEFE, 0x000000FD, 0xFB060104, 0xFA10F9FB);
	r7 = D(r7, s0_2_2, 0x0003FE00, 0x04FF0100, 0xFE010101, 0x0607FFFB);
	r0 = D(r0, s1_0_0, 0x05F8F5F8, 0xFA0603FA, 0xF8FC0502, 0x05FF02FE);
	r1 = D(r1, s1_0_0, 0xFC0202FE, 0xFE0304F5, 0xFD01FF05, 0xF7FD04FE);
	r2 = D(r2, s1_0_0, 0xFE010003, 0x0BF807FB, 0x03FFFDFA, 0xFE000400);
	r3 = D(r3, s1_0_0, 0x0AFFFCFD, 0xFF04FEFD, 0xF70DFAF2, 0xFA140103);
	r4 = D(r4, s1_0_0, 0xFAFE0105, 0x07FD00F4, 0x010100FF, 0x02000302);
	r5 = D(r5, s1_0_0, 0x00FEFFFF, 0x01080202, 0xFF030100, 0xFD0402F9);
	r6 = D(r6, s1_0_0, 0x040CFAFC, 0x0203FC00, 0x01FE00FA, 0x05EE0704);
	r7 = D(r7, s1_0_0, 0xFFFFFDFE, 0xFF0400FC, 0x07EA0002, 0x040602FB);
	r0 = D(r0, s1_0_1, 0x0BF1F404, 0xF30007EC, 0xF80C0703, 0xFFF4FFFE);
	r1 = D(r1, s1_0_1, 0x0102FE00, 0xF414F1F2, 0x05FD0206, 0xFA030903);
	r2 = D(r2, s1_0_1, 0xFC0200FD, 0xF50209FB, 0xF5FF02F9, 0x020D0D00);
	r3 = D(r3, s1_0_1, 0xF80300F5, 0xF8FD0301, 0xE8F2061F, 0x0EF70007);
	r4 = D(r4, s1_0_1, 0xFB0306FA, 0xFBFB04F6, 0x03FC02FE, 0x06FA00FA);
	r5 = D(r5, s1_0_1, 0x000301FE, 0x02FEFEFF, 0x060803FD, 0x0C05FD04);
	r6 = D(r6, s1_0_1, 0xFCFDF6F4, 0xFA0001FA, 0xF6090006, 0xFBF60DFA);
	r7 = D(r7, s1_0_1, 0xFDFC0004, 0x0607FF01, 0x00FFFE01, 0xF8DB0003);
	r0 = D(r0, s1_0_2, 0x0605F5F4, 0x0A1AFE0C, 0xEB07FE02, 0x08FA03EE);
	r1 = D(r1, s1_0_2, 0xF90700FC, 0x81B98181, 0x03FDFCFC, 0x0302FFF8);
	r2 = D(r2, s1_0_2, 0xFD000001, 0x00000100, 0x03FEFDFE, 0xFB050407);
	r3 = D(r3, s1_0_2, 0x05FA00EF, 0xFE0500FD, 0x03FF02F6, 0xFBFF04F4);
	r4 = D(r4, s1_0_2, 0x02FA03FB, 0xFA000300, 0xFE010000, 0x000603FE);
	r5 = D(r5, s1_0_2, 0x010200FF, 0x03090001, 0xFE0000FE, 0xFE00FEFB);
	r6 = D(r6, s1_0_2, 0x0000FCFF, 0x030000FF, 0xFE030302, 0x050A03F1);
	r7 = D(r7, s1_0_2, 0xFEFFFD02, 0xFC020102, 0x01FEFF01, 0x010FF7F9);
	r0 = D(r0, s1_1_0, 0x00F4EEF9, 0xFFFAFF03, 0xF4090501, 0x05FDFFFC);
	r1 = D(r1, s1_1_0, 0xF904FEFA, 0x01FE06FF, 0xFB0FFFFE, 0xFCFE00F7);
	r2 = D(r2, s1_1_0, 0xFAFA01F6, 0xF4FE05E3, 0x05F90006, 0xFF0C0FFD);
	r3 = D(r3, s1_1_0, 0x040004FC, 0xFD05FE02, 0xFBFF020D, 0xF3F7FDFE);
	r4 = D(r4, s1_1_0, 0x0114FB00, 0x04FE0DF8, 0x02FA0200, 0xFAF9F7FA);
	r5 = D(r5, s1_1_0, 0x05FAFE05, 0xFCFBFAF6, 0x070C01EE, 0x030DFCF3);
	r6 = D(r6, s1_1_0, 0x09F905FF, 0x00FBFE00, 0x010000FE, 0xFE141A25);
	r7 = D(r7, s1_1_0, 0x05040601, 0x040500F7, 0x0AE9F2F8, 0xFE00FC01);
	r0 = D(r0, s1_1_1, 0xFEF73C06, 0x0A0913F4, 0xF91F1E19, 0xEDF45D34);
	r1 = D(r1, s1_1_1, 0x181D0401, 0x0E0DFBFE, 0x0A1C0514, 0x001C0009);
	r2 = D(r2, s1_1_1, 0x0C28F303, 0x05F6FF08, 0xF20C040A, 0x160B9CCE);
	r3 = D(r3, s1_1_1, 0xE214FD0F, 0x1524FEFB, 0x0D10FCEA, 0x090E0110);
	r4 = D(r4, s1_1_1, 0xFC080CFF, 0x07F80504, 0x0705FB01, 0xE2120701);
	r5 = D(r5, s1_1_1, 0xEFEF0205, 0xF9040005, 0xD6FF0007, 0x081A0115);
	r6 = D(r6, s1_1_1, 0xE514F30B, 0x0813000B, 0xF11D05FA, 0xF00E03C9);
	r7 = D(r7, s1_1_1, 0xE50904FD, 0xE014FEFD, 0xF6F1000F, 0xFCFA0DFE);
	r0 = D(r0, s1_1_2, 0xFD00F205, 0x02090305, 0x010802FD, 0x060BFFF7);
	r1 = D(r1, s1_1_2, 0xFFF100F4, 0xFD0EE9F1, 0xFE010305, 0xEA000AF9);
	r2 = D(r2, s1_1_2, 0x04FBFFFB, 0xFE0202FF, 0xF800FE01, 0x01F40E02);
	r3 = D(r3, s1_1_2, 0xF309030B, 0xF7F800F2, 0xF2010603, 0xFE03FDF4);
	r4 = D(r4, s1_1_2, 0x1219FEFE, 0xFE0100FE, 0xFF0100FE, 0xF70C0305);
	r5 = D(r5, s1_1_2, 0xF6FEFE00, 0xF8F4FBFA, 0xFC01FDFF, 0x01FA05FD);
	r6 = D(r6, s1_1_2, 0xFD05F4FA, 0x05FD0402, 0xFDF501FE, 0x091207EE);
	r7 = D(r7, s1_1_2, 0xFE0300F8, 0x0001FFFD, 0x0307FC01, 0xEF070402);
	r0 = D(r0, s1_2_0, 0x08FFF4F5, 0xFC03F704, 0xF10A00FC, 0x050202FD);
	r1 = D(r1, s1_2_0, 0x03030100, 0xF9000206, 0xF90100FF, 0x04020100);
	r2 = D(r2, s1_2_0, 0x0802FDFA, 0xFFFF0105, 0xFE0200F9, 0xFF050600);
	r3 = D(r3, s1_2_0, 0xF8FF0309, 0x010302FC, 0xFEFE00FC, 0x00FE03FE);
	r4 = D(r4, s1_2_0, 0x17070303, 0xF4FF02FE, 0x05FCFF00, 0x040305FB);
	r5 = D(r5, s1_2_0, 0xF9FCFFFF, 0x06FFFDFE, 0x01FF02FF, 0x0804FFF2);
	r6 = D(r6, s1_2_0, 0xFF07FEFE, 0x02FEFFFF, 0x0102FDFF, 0x06DC1A0E);
	r7 = D(r7, s1_2_0, 0x000504FB, 0x070100FD, 0x060B02FF, 0x00000001);
	r0 = D(r0, s1_2_1, 0x00FCF401, 0xFA080201, 0x040812E9, 0xFA0BFA04);
	r1 = D(r1, s1_2_1, 0x02010003, 0x000003FC, 0x0D0C03F7, 0xF10C01FA);
	r2 = D(r2, s1_2_1, 0xE8E40304, 0xFE0301FD, 0x0902FDF7, 0x06F911FB);
	r3 = D(r3, s1_2_1, 0x0F0104F8, 0x0200FE04, 0x06000108, 0x070202FF);
	r4 = D(r4, s1_2_1, 0xE0F3EE12, 0x01FC0202, 0x04F800FB, 0x0804FEF9);
	r5 = D(r5, s1_2_1, 0x080CF7FC, 0xF3FF0304, 0x0104FFFD, 0x03FBFE0C);
	r6 = D(r6, s1_2_1, 0xFAFF0202, 0x0005FFFA, 0xFB03FF05, 0x12201310);
	r7 = D(r7, s1_2_1, 0x050101FF, 0xF6020104, 0xFEF8FC04, 0x0204FEFE);
	r0 = D(r0, s1_2_2, 0x07FFF2FA, 0xFF0B04F8, 0x01FE05FB, 0x00FD01FE);
	r1 = D(r1, s1_2_2, 0x0007FEF8, 0xFD0106FE, 0xF803FF04, 0x00FA0003);
	r2 = D(r2, s1_2_2, 0xFFFEFCFC, 0x0101FFFF, 0x01FC00FC, 0xFCFF0601);
	r3 = D(r3, s1_2_2, 0x03FEFF05, 0xFD04FFF9, 0x010600F9, 0xFE03FFFC);
	r4 = D(r4, s1_2_2, 0xF705F6F5, 0x010301FD, 0xFF0300FF, 0x02FC01FE);
	r5 = D(r5, s1_2_2, 0xFEF4FFFF, 0xFC03FDFF, 0x030001FE, 0x0702FDFB);
	r6 = D(r6, s1_2_2, 0xF814FD06, 0xFEFA0201, 0x01FFFFFB, 0x04FF01FD);
	r7 = D(r7, s1_2_2, 0x03FC01FD, 0x030100FD, 0xFF01FE01, 0x08FE02FB);
	s0_0_0 = G[4][xy.y+0][xy.x+0]; s0_0_1 = G[4][xy.y+0][xy.x+1];
	s0_0_2 = G[4][xy.y+0][xy.x+2]; s0_1_0 = G[4][xy.y+1][xy.x+0];
	s0_1_1 = G[4][xy.y+1][xy.x+1]; s0_1_2 = G[4][xy.y+1][xy.x+2];
	s0_2_0 = G[4][xy.y+2][xy.x+0]; s0_2_1 = G[4][xy.y+2][xy.x+1];
	s0_2_2 = G[4][xy.y+2][xy.x+2]; s1_0_0 = G[5][xy.y+0][xy.x+0];
	s1_0_1 = G[5][xy.y+0][xy.x+1]; s1_0_2 = G[5][xy.y+0][xy.x+2];
	s1_1_0 = G[5][xy.y+1][xy.x+0]; s1_1_1 = G[5][xy.y+1][xy.x+1];
	s1_1_2 = G[5][xy.y+1][xy.x+2]; s1_2_0 = G[5][xy.y+2][xy.x+0];
	s1_2_1 = G[5][xy.y+2][xy.x+1]; s1_2_2 = G[5][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xF80AF706, 0xFBFB0A07, 0x05EE0AF1, 0x05F305FC);
	r1 = D(r1, s0_0_0, 0xFEFC0003, 0xF7F6FAF5, 0xFE000205, 0x03020706);
	r2 = D(r2, s0_0_0, 0xFE00F903, 0xF9ED1ADF, 0xFCFD04FD, 0x05FFFE02);
	r3 = D(r3, s0_0_0, 0x09FE09FB, 0x0800FF04, 0xFF08000D, 0x01FD0103);
	r4 = D(r4, s0_0_0, 0xF7F404FF, 0x060012F2, 0xFF0205FD, 0x00FBFEFE);
	r5 = D(r5, s0_0_0, 0xFF0106FF, 0x0001FAFE, 0x09FF0905, 0x01000707);
	r6 = D(r6, s0_0_0, 0x050203F8, 0xFF010407, 0xFE0006FF, 0x01EDFAF2);
	r7 = D(r7, s0_0_0, 0x0503FDFF, 0x00000804, 0xFE001103, 0x040000FE);
	r0 = D(r0, s0_0_1, 0xF7F8FDF7, 0xF30307FE, 0x04FF1ED4, 0xF8F504FC);
	r1 = D(r1, s0_0_1, 0x0B080902, 0xFAF51005, 0xF5F4FB03, 0xEAF1ECFD);
	r2 = D(r2, s0_0_1, 0x00FF0902, 0x02FBECE6, 0xF9F609FF, 0x0C01FEFF);
	r3 = D(r3, s0_0_1, 0x03FAFDF6, 0xFBF912F1, 0xBDF4FAE5, 0x070402F5);
	r4 = D(r4, s0_0_1, 0xFFFD0C05, 0x08FCF2F1, 0x0202FD00, 0x0FFC14F5);
	r5 = D(r5, s0_0_1, 0x020103FC, 0x0513FEFA, 0xF6FBD7E0, 0xFF09FF02);
	r6 = D(r6, s0_0_1, 0x13FDEEFF, 0xFAFDF8FC, 0xFD0904F7, 0xFFE601F0);
	r7 = D(r7, s0_0_1, 0x05010300, 0x0205FAFE, 0xFEFCF6FC, 0xF90B10FB);
	r0 = D(r0, s0_0_2, 0xF3090606, 0x0606F405, 0xF9011BF5, 0x05F401F8);
	r1 = D(r1, s0_0_2, 0x030201FE, 0x81818181, 0x07FD1003, 0x0EFD1206);
	r2 = D(r2, s0_0_2, 0xFF00FE01, 0x01FD0902, 0x0001FAFF, 0x02FD0002);
	r3 = D(r3, s0_0_2, 0xFF010AFC, 0xFE04FCFD, 0x00F60B0B, 0x01FBF508);
	r4 = D(r4, s0_0_2, 0x01EC0205, 0x00FD06FC, 0x000003FF, 0xFCFF0006);
	r5 = D(r5, s0_0_2, 0xFF020200, 0xFE03F900, 0x0A020EFF, 0xFEFE00FE);
	r6 = D(r6, s0_0_2, 0x09001000, 0x00020500, 0xFDFF07FB, 0x12F704F9);
	r7 = D(r7, s0_0_2, 0x0301FDFF, 0x04FE0300, 0xFE01FA00, 0xFD0506FC);
	r0 = D(r0, s0_1_0, 0xF9F9FFFD, 0x030602FE, 0x0EF217E1, 0xF9F601FE);
	r1 = D(r1, s0_1_0, 0x10050103, 0x00F6FA01, 0x040C010C, 0x0AFE0504);
	r2 = D(r2, s0_1_0, 0xFEFE0B05, 0xFF02FF06, 0xF7FFFFFF, 0x0B00FF09);
	r3 = D(r3, s0_1_0, 0xECFC100A, 0x1300FF00, 0x03F50BF9, 0x0000FF0C);
	r4 = D(r4, s0_1_0, 0x130B0CFF, 0xC9F40FFF, 0xFFF605F8, 0x14000B0C);
	r5 = D(r5, s0_1_0, 0xFD0104FD, 0xF30206FC, 0xF7FA0309, 0x030A060A);
	r6 = D(r6, s0_1_0, 0xF10C02FB, 0xF8F603FE, 0x04F90200, 0xDFE3F9E0);
	r7 = D(r7, s0_1_0, 0xF2F604DC, 0x05FF0706, 0xFD0D0904, 0x01050A00);
	r0 = D(r0, s0_1_1, 0xF9BC00CC, 0xD2EA09F5, 0x81CD5681, 0xC930F80F);
	r1 = D(r1, s0_1_1, 0xA6DB13D0, 0x05FCF5F5, 0xFE010EE6, 0xE60E08F9);
	r2 = D(r2, s0_1_1, 0xFA0DFDF7, 0xFDFEFF02, 0xF10CFEE7, 0xE4DA08EA);
	r3 = D(r3, s0_1_1, 0xC60815EC, 0x81EA19FC, 0x010FF40B, 0xABE611EB);
	r4 = D(r4, s0_1_1, 0xF8F30D01, 0x04F6FFF4, 0xFA0BFCFC, 0xBC01BA93);
	r5 = D(r5, s0_1_1, 0xFFF1DF00, 0x07E7F4F3, 0x81F924C0, 0xF1F6FEE4);
	r6 = D(r6, s0_1_1, 0x8109CF81, 0xF7FBF0F5, 0xFFF003EF, 0xD4EE31F6);
	r7 = D(r7, s0_1_1, 0xE6FEADE8, 0xB4FFCDF8, 0x00E8D4FE, 0xBAEE1AEF);
	r0 = D(r0, s0_1_2, 0xFB04FCEE, 0xF1000611, 0xFE0A2FDC, 0xFBF30000);
	r1 = D(r1, s0_1_2, 0xFEFFD3F6, 0xE6E9FBE6, 0xFDF2FA03, 0xDEEEE401);
	r2 = D(r2, s0_1_2, 0xFFFFF503, 0xFCFD0707, 0xFC05FEFC, 0x08FFFEFC);
	r3 = D(r3, s0_1_2, 0xF8000CFA, 0xEBFF13DF, 0xF6000801, 0x0FF600F4);
	r4 = D(r4, s0_1_2, 0x070F0CFE, 0x0101040C, 0x01000603, 0x07FE11F1);
	r5 = D(r5, s0_1_2, 0xFD02FBFE, 0xF203FBFC, 0x0AFD0205, 0xF9F5EEFA);
	r6 = D(r6, s0_1_2, 0x1BF9F705, 0x090C08FE, 0xF903FA09, 0xF3FCFBFA);
	r7 = D(r7, s0_1_2, 0xFC04FBF8, 0x02010800, 0x0101F5FE, 0xF80322EA);
	r0 = D(r0, s0_2_0, 0xF80BF906, 0x00040207, 0x0A0206FA, 0xFEF00401);
	r1 = D(r1, s0_2_0, 0x01FFFF02, 0x02FD0305, 0xFE020202, 0xFCFA0301);
	r2 = D(r2, s0_2_0, 0xFDFEFE00, 0x03FEFAFF, 0xFF08F804, 0x0900FD01);
	r3 = D(r3, s0_2_0, 0xFDFCFB04, 0x07FFFCFF, 0xFF02FEFC, 0xFEFF00FE);
	r4 = D(r4, s0_2_0, 0x0AE0FBF8, 0x08FFFFFB, 0xFF0102FF, 0x08FA0BF8);
	r5 = D(r5, s0_2_0, 0xFF020606, 0x00030604, 0x0C0303FD, 0x02030200);
	r6 = D(r6, s0_2_0, 0xFF080300, 0xFBFC0303, 0x01030001, 0xFF13EC8E);
	r7 = D(r7, s0_2_0, 0xFF020606, 0x09FFFEFE, 0xFD00F703, 0x0503FF01);
	r0 = D(r0, s0_2_1, 0xFF00F4F9, 0xFBFBFDFF, 0xF61001EF, 0xF8F30CFD);
	r1 = D(r1, s0_2_1, 0x01FE0502, 0x03020105, 0xFE0BFC0B, 0x0E0007F9);
	r2 = D(r2, s0_2_1, 0xFEE707EF, 0xFF0109FE, 0x090A0000, 0x0C00F906);
	r3 = D(r3, s0_2_1, 0x050EF904, 0x0C05F900, 0xFB0103FF, 0xFB080603);
	r4 = D(r4, s0_2_1, 0xCACDCECC, 0xFC0004FC, 0x010203FE, 0x0802FCFC);
	r5 = D(r5, s0_2_1, 0xFC0E1000, 0xF6F2FD01, 0x0B01F803, 0xF9F60AF5);
	r6 = D(r6, s0_2_1, 0xF405FD04, 0xF90707FC, 0xFFFBFEFF, 0xE2F0F6FA);
	r7 = D(r7, s0_2_1, 0x0404060D, 0xFFFD08F4, 0xFFFF0EF9, 0x0503FB04);
	r0 = D(r0, s0_2_2, 0xFA0FF003, 0xEE0109FF, 0x0A010005, 0x04F302FA);
	r1 = D(r1, s0_2_2, 0x04FC00FC, 0xFCF711FD, 0xF801FB04, 0x0308000C);
	r2 = D(r2, s0_2_2, 0xFDFF0DFB, 0x00010602, 0xFE00FF08, 0x03FC0003);
	r3 = D(r3, s0_2_2, 0x00FAFA10, 0x0B01FBFC, 0xFF02FA04, 0x0300FD02);
	r4 = D(r4, s0_2_2, 0xF119D8E3, 0xFF000704, 0x0001FF00, 0xFDFEFC03);
	r5 = D(r5, s0_2_2, 0x00010506, 0x040403F9, 0x04FDFEFE, 0x03FF05FD);
	r6 = D(r6, s0_2_2, 0xFE050401, 0x0203FD01, 0xFB0206FE, 0xF7F7E1F4);
	r7 = D(r7, s0_2_2, 0x02FD0507, 0x02FE0300, 0xFF00FF00, 0x0300F808);
	r0 = D(r0, s1_0_0, 0x090500FF, 0x1005FAFB, 0xFDFDF711, 0x07FFFCFD);
	r1 = D(r1, s1_0_0, 0xFF0200FE, 0xFBED05F5, 0x030003F7, 0x08FC06FD);
	r2 = D(r2, s1_0_0, 0xFE000101, 0xEE04FAF0, 0x01020108, 0xFB0003FD);
	r3 = D(r3, s1_0_0, 0xFE0001F7, 0xFF010401, 0x05EF070A, 0xFFFF0103);
	r4 = D(r4, s1_0_0, 0x030C0101, 0xF6030205, 0xFF00FCFE, 0xFAFB01FC);
	r5 = D(r5, s1_0_0, 0xFC00FEFE, 0x01FF02FB, 0x04FC04EF, 0xFEFD02FA);
	r6 = D(r6, s1_0_0, 0xF8FF06FB, 0x0704FC02, 0xFEFBFE05, 0x0AF204FC);
	r7 = D(r7, s1_0_0, 0xFD04FCF6, 0xFC0102F6, 0x08FFEEF7, 0xFCFA02E8);
	r0 = D(r0, s1_0_1, 0x0B01F5FF, 0x05F9FBFB, 0x121FFB81, 0x16FE0712);
	r1 = D(r1, s1_0_1, 0x020404E4, 0x22EEEBF9, 0xF50006FE, 0xED070FEA);
	r2 = D(r2, s1_0_1, 0xFB0201F4, 0x0DF9FA08, 0xFA02F8F8, 0xEDFBFEEB);
	r3 = D(r3, s1_0_1, 0x0602F0F5, 0xFCFB06D7, 0xFEEC16E9, 0x0CF7FDD4);
	r4 = D(r4, s1_0_1, 0x09040E01, 0x0002FBFE, 0x01FFFDFE, 0x10FBF8DE);
	r5 = D(r5, s1_0_1, 0x0F0200FF, 0x00FC00ED, 0xE901FFC5, 0x060105EF);
	r6 = D(r6, s1_0_1, 0xF604FEFC, 0xF501FCF0, 0xF8FF03DD, 0x1F0A070B);
	r7 = D(r7, s1_0_1, 0x0D03FDFF, 0x0601FFE7, 0xF8FF0BFC, 0x04ECF9D3);
	r0 = D(r0, s1_0_2, 0x0305FF01, 0xFFF3FEFE, 0x0FFCDBF3, 0x0FFF0BFA);
	r1 = D(r1, s1_0_2, 0x050204FC, 0x82818581, 0xFC0604F7, 0xFA06F5F8);
	r2 = D(r2, s1_0_2, 0xF90202FF, 0x05031201, 0xFE000205, 0xFC02F401);
	r3 = D(r3, s1_0_2, 0xFDFC01FC, 0x00FC02FD, 0xF00904FD, 0xFDFE0E00);
	r4 = D(r4, s1_0_2, 0xF9030801, 0x080102FF, 0x03010000, 0x02FF0AFF);
	r5 = D(r5, s1_0_2, 0xFA0003FB, 0x01FE03FE, 0x0AFD0002, 0xFFFE03FD);
	r6 = D(r6, s1_0_2, 0x01010EF9, 0x07FE010A, 0x0405FC03, 0x09FC0EFA);
	r7 = D(r7, s1_0_2, 0xF4000202, 0x02FFFE04, 0xFCFFFE06, 0x10F407E1);
	r0 = D(r0, s1_1_0, 0x0901FAFB, 0x0301FBFE, 0xF904F2E0, 0x04FEFB00);
	r1 = D(r1, s1_1_0, 0xFB070100, 0x0600FC01, 0x00000406, 0x03FA0401);
	r2 = D(r2, s1_1_0, 0xFC02FDF7, 0x0DEF0A06, 0x06FDFEFE, 0xFAF706FD);
	r3 = D(r3, s1_1_0, 0x0BF5000A, 0xFA0901FA, 0xFA0600FC, 0xFFFB08F8);
	r4 = D(r4, s1_1_0, 0x15F500E5, 0xFEFD01FE, 0x02FB00FC, 0xF2FE01E4);
	r5 = D(r5, s1_1_0, 0x05FD0402, 0x0101FEF9, 0x04F508FB, 0x00F6FFFD);
	r6 = D(r6, s1_1_0, 0xFDEB0BFF, 0x0005FC01, 0x040CFEFF, 0x150EF4F8);
	r7 = D(r7, s1_1_0, 0x0CF200EC, 0xFFF801F9, 0x0800E5F9, 0x07FCF8FA);
	r0 = D(r0, s1_1_1, 0xFBDCFDEA, 0xFAF1F8EE, 0x0BE2DEDE, 0xE6F91EF4);
	r1 = D(r1, s1_1_1, 0x0DDEFED0, 0xFBE80A00, 0x04E5FEFB, 0xEECAEEF7);
	r2 = D(r2, s1_1_1, 0x32F8EFD5, 0xE20013FB, 0x3AFC1007, 0x14F2DA0B);
	r3 = D(r3, s1_1_1, 0x07E309FD, 0xFEEBF5FC, 0x07E9F200, 0xF0D5B9FF);
	r4 = D(r4, s1_1_1, 0x06DF05CD, 0xEBF524FE, 0x06F90D06, 0x19E1FA01);
	r5 = D(r5, s1_1_1, 0x15000CEF, 0x02DCECFB, 0xEBFE0807, 0x00EEF0D7);
	r6 = D(r6, s1_1_1, 0x05F00408, 0xF2F309FE, 0xFCE407FE, 0xE719C4A9);
	r7 = D(r7, s1_1_1, 0x31FBFDFB, 0x0FFA0CE6, 0x18061BFC, 0xF80AF800);
	r0 = D(r0, s1_1_2, 0xFC06D70B, 0xF0E300F9, 0x2510C1EB, 0xEA0DECF8);
	r1 = D(r1, s1_1_2, 0x02F70404, 0xFCF4E9F5, 0x030C14FA, 0x090029FC);
	r2 = D(r2, s1_1_2, 0x0EFD0B00, 0x0A050200, 0x06FFF007, 0x0FF50E03);
	r3 = D(r3, s1_1_2, 0x12FC120A, 0xFBFC1D03, 0xF9041102, 0x08070DFF);
	r4 = D(r4, s1_1_2, 0x0E0303E9, 0x0F0709FD, 0x00010A01, 0x0407FEFE);
	r5 = D(r5, s1_1_2, 0x0BFDF106, 0x030503FF, 0x0801FFFC, 0xFF06F702);
	r6 = D(r6, s1_1_2, 0x0AF3E3FA, 0x00FE0D05, 0xF1FD0703, 0x0B072A01);
	r7 = D(r7, s1_1_2, 0x09000405, 0xFD000403, 0xFAFFE902, 0xFA09FB00);
	r0 = D(r0, s1_2_0, 0x020502FF, 0xFA03FFFF, 0xF9FAFC05, 0x0106F9FD);
	r1 = D(r1, s1_2_0, 0x00FDFF00, 0x0302FAFE, 0x02FB0401, 0x0407FD02);
	r2 = D(r2, s1_2_0, 0xFD02FD07, 0xFDFF0302, 0x00FD0402, 0x00FD05FF);
	r3 = D(r3, s1_2_0, 0xFD0402FF, 0x01000201, 0x01FC0103, 0x05010100);
	r4 = D(r4, s1_2_0, 0x0906FD08, 0xF5F8FE02, 0x00FFFEFE, 0x03FFFE02);
	r5 = D(r5, s1_2_0, 0x02FD0103, 0xFD06FE00, 0x01010102, 0x00FA05FE);
	r6 = D(r6, s1_2_0, 0x02F809FE, 0x0300FC03, 0x010000FF, 0x01C919DA);
	r7 = D(r7, s1_2_0, 0x02070302, 0xFF010202, 0xFDFFFF00, 0x01FFFFFE);
	r0 = D(r0, s1_2_1, 0xF3FBF306, 0x0815EC05, 0x1108EE00, 0xF30AECFF);
	r1 = D(r1, s1_2_1, 0xFDFCFD05, 0xFB050100, 0xFCEFFF04, 0x00FA1301);
	r2 = D(r2, s1_2_1, 0x0609FE06, 0x0404FA00, 0x07FCF004, 0x14F019FD);
	r3 = D(r3, s1_2_1, 0x05F0FDFA, 0x01FB0401, 0x0202FB01, 0xFE03F501);
	r4 = D(r4, s1_2_1, 0xFCB8C9EF, 0x0A05F4FF, 0x02FFFF02, 0x01F80AFE);
	r5 = D(r5, s1_2_1, 0xE5F7DB04, 0xFB0EF501, 0x02FB0101, 0xFC0AF206);
	r6 = D(r6, s1_2_1, 0xEFEEFAFE, 0xF9FB0001, 0xFE02FC01, 0xF713E8F7);
	r7 = D(r7, s1_2_1, 0xF801F406, 0xFC00FF04, 0x00020202, 0x01F9FFFE);
	r0 = D(r0, s1_2_2, 0xFEF2F504, 0xFBFFF8F8, 0x0700E5FE, 0xFEFEFEFC);
	r1 = D(r1, s1_2_2, 0x00FF0701, 0x0B07F604, 0x01020600, 0xEDF6ECFF);
	r2 = D(r2, s1_2_2, 0xFC020804, 0x0001FAFF, 0xFDFF0B00, 0x0603F7FF);
	r3 = D(r3, s1_2_2, 0x0B06E000, 0x01FD06FF, 0xFDFE0702, 0xFFFF0E01);
	r4 = D(r4, s1_2_2, 0x1105EC03, 0x0101FBFF, 0xFE000602, 0x0601F800);
	r5 = D(r5, s1_2_2, 0xFE000404, 0xFBFF0500, 0x01000201, 0x00040900);
	r6 = D(r6, s1_2_2, 0xFC091101, 0x0201F704, 0x010001FF, 0x08F8EAF3);
	r7 = D(r7, s1_2_2, 0x04FE0AFE, 0xFFFE0602, 0xFF00F6FF, 0x05FFFEFF);
	s0_0_0 = G[6][xy.y+0][xy.x+0]; s0_0_1 = G[6][xy.y+0][xy.x+1];
	s0_0_2 = G[6][xy.y+0][xy.x+2]; s0_1_0 = G[6][xy.y+1][xy.x+0];
	s0_1_1 = G[6][xy.y+1][xy.x+1]; s0_1_2 = G[6][xy.y+1][xy.x+2];
	s0_2_0 = G[6][xy.y+2][xy.x+0]; s0_2_1 = G[6][xy.y+2][xy.x+1];
	s0_2_2 = G[6][xy.y+2][xy.x+2]; s1_0_0 = G[7][xy.y+0][xy.x+0];
	s1_0_1 = G[7][xy.y+0][xy.x+1]; s1_0_2 = G[7][xy.y+0][xy.x+2];
	s1_1_0 = G[7][xy.y+1][xy.x+0]; s1_1_1 = G[7][xy.y+1][xy.x+1];
	s1_1_2 = G[7][xy.y+1][xy.x+2]; s1_2_0 = G[7][xy.y+2][xy.x+0];
	s1_2_1 = G[7][xy.y+2][xy.x+1]; s1_2_2 = G[7][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x0503FAF9, 0x0D09FAFF, 0xFE050302, 0x030404FF);
	r1 = D(r1, s0_0_0, 0x01FD07FC, 0xEFF3FEF1, 0xFFF8FC02, 0xFEF102FE);
	r2 = D(r2, s0_0_0, 0x0A07F8FF, 0xF7F0090D, 0x00F8FBFE, 0xFC01FF00);
	r3 = D(r3, s0_0_0, 0x0DFBFE05, 0x01FAF504, 0x06DE17F0, 0x000004ED);
	r4 = D(r4, s0_0_0, 0xFB0403FF, 0xFEFB0D05, 0x07FF08FF, 0x0408FBFA);
	r5 = D(r5, s0_0_0, 0x0106FEFC, 0x0608FCF7, 0x05F407F9, 0xFEFE02FF);
	r6 = D(r6, s0_0_0, 0xFBFF02FC, 0x03FC0607, 0xFCF60A02, 0x03FFEC05);
	r7 = D(r7, s0_0_0, 0x0F04F304, 0xFCFC08FC, 0x07F4FFFE, 0x0E050907);
	r0 = D(r0, s0_0_1, 0x0906F8EF, 0xF1F803F8, 0x0B06FD0A, 0x02FA05FD);
	r1 = D(r1, s0_0_1, 0x040DF6FE, 0x3E0234EA, 0xFB050903, 0xFB040604);
	r2 = D(r2, s0_0_1, 0x07000A07, 0xF601F7F3, 0x040500FD, 0x0102000C);
	r3 = D(r3, s0_0_1, 0x080000F2, 0x090C0AF0, 0x0504F2F2, 0x0BF414EF);
	r4 = D(r4, s0_0_1, 0xFFFA01E4, 0x08030201, 0x040100FF, 0x03FDEE04);
	r5 = D(r5, s0_0_1, 0xFC04F801, 0xFDFCE508, 0x0D0101FE, 0xFDF80100);
	r6 = D(r6, s0_0_1, 0x00F7FE02, 0x0706FDFC, 0x0F16E2E7, 0x0CF3FE04);
	r7 = D(r7, s0_0_1, 0x04F8FF01, 0x0503FFFD, 0x0B08FA03, 0x16071EFE);
	r0 = D(r0, s0_0_2, 0xFB07F7F5, 0xF5FA09FE, 0x0B0DFC01, 0xFF02FC03);
	r1 = D(r1, s0_0_2, 0x060303FB, 0xD490FDBC, 0x0200FE02, 0x0002FF00);
	r2 = D(r2, s0_0_2, 0x02FEFE00, 0x06FC00FF, 0xFD010103, 0x01050002);
	r3 = D(r3, s0_0_2, 0x0DFD0005, 0xFE01FE02, 0x0603FC0A, 0x0401FD0D);
	r4 = D(r4, s0_0_2, 0xFCF70010, 0x0100FDFE, 0x00FFFF00, 0x05000700);
	r5 = D(r5, s0_0_2, 0x0300FDFD, 0xFD03FEF3, 0xFE000103, 0x0400FBFD);
	r6 = D(r6, s0_0_2, 0x06F80301, 0xFBFF0205, 0x0D0505FF, 0x030AF8FB);
	r7 = D(r7, s0_0_2, 0x04FCFFFB, 0x01FFFEFF, 0xF90101FF, 0xFD0C0005);
	r0 = D(r0, s0_1_0, 0xFE09ED0A, 0x0B0DF70B, 0x31D30E05, 0x0E0B0DF4);
	r1 = D(r1, s0_1_0, 0xFFFAFBF9, 0xF0FCEA14, 0xFDF30FFB, 0x02FEF209);
	r2 = D(r2, s0_1_0, 0xFEF314FB, 0x01FE0BF2, 0xF70105F3, 0xF8FA0005);
	r3 = D(r3, s0_1_0, 0xF8E216FC, 0x05000605, 0x0308F504, 0x06E3F80D);
	r4 = D(r4, s0_1_0, 0x0F13E8D8, 0xFAD9E0DE, 0xFEEFFCFB, 0x0BE4ED01);
	r5 = D(r5, s0_1_0, 0xFBF4E005, 0xFDFEE90B, 0x01F0FA01, 0x06ED04F6);
	r6 = D(r6, s0_1_0, 0x06DC0F11, 0x0203EE03, 0x03FF05F2, 0xF91427F2);
	r7 = D(r7, s0_1_0, 0xFBEEFAFF, 0x07F5ECF5, 0x1ED11FED, 0xEF0113FD);
	r0 = D(r0, s0_1_1, 0x05F3E3E5, 0xD90AC80F, 0x21063343, 0x26F30323);
	r1 = D(r1, s0_1_1, 0xFECE2A00, 0x16FCE61A, 0xFADE07F6, 0xF8E507EE);
	r2 = D(r2, s0_1_1, 0xF6FD29DE, 0xFCF60503, 0xF8FD06F7, 0xCF1A11DD);
	r3 = D(r3, s0_1_1, 0xECE803DF, 0xF1D8DBD8, 0xF5E7FD06, 0x06C8E8DF);
	r4 = D(r4, s0_1_1, 0xDBE9E5E9, 0xF5FEFD09, 0xF009F8FD, 0x0BF131F1);
	r5 = D(r5, s0_1_1, 0x08FBFF02, 0x00FB042A, 0xFB0E29DA, 0xFFE5F602);
	r6 = D(r6, s0_1_1, 0x090C1B19, 0x2AFE08EC, 0x08EC02EA, 0x0515F014);
	r7 = D(r7, s0_1_1, 0xFEFE1CFE, 0x05181CFC, 0x1BF3FFF5, 0xC9B4F1F3);
	r0 = D(r0, s0_1_2, 0xF40AEB09, 0xFB07F60D, 0x0D02F812, 0xECFB08F9);
	r1 = D(r1, s0_1_2, 0xFC05FCFA, 0xF0F51550, 0xF80103EF, 0x060104F8);
	r2 = D(r2, s0_1_2, 0xFF060304, 0xFA06FE00, 0xFF040305, 0x16020109);
	r3 = D(r3, s0_1_2, 0xFD0805F2, 0x000710FC, 0x000103EA, 0xFEFFF8EF);
	r4 = D(r4, s0_1_2, 0xF6FB10E1, 0xFFFE0006, 0x020305FC, 0x0107FEFC);
	r5 = D(r5, s0_1_2, 0x0004FA02, 0x02060003, 0x03FEFC00, 0xFA030301);
	r6 = D(r6, s0_1_2, 0xF8F6040B, 0x0BFAFDF8, 0x04FAF609, 0xEF0BFD10);
	r7 = D(r7, s0_1_2, 0x0204FF05, 0x050400FA, 0x00FD02FF, 0xFB0302FA);
	r0 = D(r0, s0_2_0, 0x0004FA02, 0x0B04FEFF, 0xF71EE904, 0x0405FE03);
	r1 = D(r1, s0_2_0, 0x07F801FA, 0xFB0006E9, 0xFFFEFDFF, 0x000505FC);
	r2 = D(r2, s0_2_0, 0x00F403FC, 0x06FD03FD, 0x0400FBFC, 0xFE0103FD);
	r3 = D(r3, s0_2_0, 0x060BF909, 0x01FE00FB, 0x01FD0100, 0x07FDFF05);
	r4 = D(r4, s0_2_0, 0x33BCDC13, 0x020D0BF9, 0x06F8F7FB, 0xF7D00FEA);
	r5 = D(r5, s0_2_0, 0x02FFF704, 0x00F905FA, 0xFC010300, 0x06F008FD);
	r6 = D(r6, s0_2_0, 0xF3F5FCFA, 0xF7FB05FC, 0x05FF0003, 0xBF0EDDD2);
	r7 = D(r7, s0_2_0, 0x0300020C, 0x09FA10FC, 0x0FF40008, 0x0604FE07);
	r0 = D(r0, s0_2_1, 0xFAFB0106, 0xEC0A08FB, 0x00132621, 0x0408060F);
	r1 = D(r1, s0_2_1, 0x000001EF, 0x00F8FA05, 0xFAF50405, 0x0B00FDF7);
	r2 = D(r2, s0_2_1, 0xFC09DDF3, 0x00080101, 0xF3FBFF02, 0xFFF700FA);
	r3 = D(r3, s0_2_1, 0x0402FFFE, 0x07FE0308, 0x03FDFFFA, 0x03FCFF02);
	r4 = D(r4, s0_2_1, 0x11F507FE, 0x01070301, 0x040002FD, 0xFB0B070A);
	r5 = D(r5, s0_2_1, 0xF9060505, 0xFB030203, 0x09FC0606, 0x06FBFFF7);
	r6 = D(r6, s0_2_1, 0x04090AF1, 0x060AFEF9, 0x0706FB00, 0x04FFF7D4);
	r7 = D(r7, s0_2_1, 0xFE01F60D, 0x08F9F3DF, 0xFF11F7F4, 0xF805FD03);
	r0 = D(r0, s0_2_2, 0xF9FDF4FB, 0xFD0DFFEB, 0xFEFEFF09, 0x00F701FE);
	r1 = D(r1, s0_2_2, 0xFF0005F6, 0xF6FFFEE1, 0x00FEF900, 0x06F701FF);
	r2 = D(r2, s0_2_2, 0xFE060A04, 0x020102FF, 0x0306FD03, 0x0204FF02);
	r3 = D(r3, s0_2_2, 0x04020208, 0x01020905, 0x0304FDFE, 0x00040100);
	r4 = D(r4, s0_2_2, 0x261A1020, 0x030003FF, 0x00010102, 0xFE050501);
	r5 = D(r5, s0_2_2, 0xFB05F707, 0x03FF01F9, 0xFF0000FE, 0x00FE0300);
	r6 = D(r6, s0_2_2, 0x05FD03F8, 0x03000305, 0x00FD04FD, 0xFF01FAFD);
	r7 = D(r7, s0_2_2, 0x020202FC, 0x01FC0101, 0xFE000003, 0x06020106);
	r0 = D(r0, s1_0_0, 0x030BF7F4, 0xFCFFEEF8, 0xF107FE0B, 0xFFFEFD00);
	r1 = D(r1, s1_0_0, 0xFFFF0302, 0x00FA05E6, 0x00FF0704, 0xFB00FA07);
	r2 = D(r2, s1_0_0, 0xFA0206FC, 0xF0EF0FFC, 0x07FF0B05, 0xFD0506FF);
	r3 = D(r3, s1_0_0, 0xF50206FC, 0xFA02FE04, 0xFE01F201, 0x030103F9);
	r4 = D(r4, s1_0_0, 0xFBFBFF00, 0xF3FC1403, 0xFFFE03F8, 0xFE0401F9);
	r5 = D(r5, s1_0_0, 0x01FD0003, 0xF9060300, 0xFB050602, 0x02020401);
	r6 = D(r6, s1_0_0, 0x05FAFD0A, 0xFA00FC03, 0xFFFCFF07, 0xED04FAF6);
	r7 = D(r7, s1_0_0, 0xF708FA01, 0x01000201, 0xFC080405, 0xF204FA06);
	r0 = D(r0, s1_0_1, 0xF90416FA, 0x09FEFB07, 0xCF1DE408, 0x0EE21506);
	r1 = D(r1, s1_0_1, 0xFB07FB07, 0x0501FBF7, 0x03FB08FD, 0xFB0910F0);
	r2 = D(r2, s1_0_1, 0x0307060A, 0xEEFBF514, 0x05F90EF4, 0xF31BED02);
	r3 = D(r3, s1_0_1, 0xFBF810DD, 0x060409E9, 0xFFFEF710, 0xF208081E);
	r4 = D(r4, s1_0_1, 0x06F8FFF1, 0xF302FB08, 0xFE01010A, 0xFDFE0A0D);
	r5 = D(r5, s1_0_1, 0xFFFD04FE, 0xF914050C, 0xFBF70608, 0xF709000E);
	r6 = D(r6, s1_0_1, 0x08F9FA0E, 0x05FC0801, 0xF80201F5, 0xF9FCFFEF);
	r7 = D(r7, s1_0_1, 0xF8090206, 0xF502FA09, 0xFEFAFBE9, 0xFF0A2410);
	r0 = D(r0, s1_0_2, 0x0301FAF6, 0xF30DF2F5, 0xEA11EEF8, 0xF9FD0111);
	r1 = D(r1, s1_0_2, 0xFEFB02FA, 0x81818119, 0xFFFA040D, 0xF9F905FB);
	r2 = D(r2, s1_0_2, 0x0101FE03, 0xFAFEFEEE, 0xFC030004, 0x0106FFF3);
	r3 = D(r3, s1_0_2, 0x0201080D, 0xF8FDFC07, 0xFE0105FD, 0xFDFDFB07);
	r4 = D(r4, s1_0_2, 0x08FEFD07, 0xFE00FAF0, 0x01FE00FB, 0xF3FE0009);
	r5 = D(r5, s1_0_2, 0x03FE00FA, 0xFC08F9F4, 0xFFFEFFFE, 0x00FC0203);
	r6 = D(r6, s1_0_2, 0xF8FB00FA, 0xFC06FC01, 0x00FFFCF4, 0x02FE02FC);
	r7 = D(r7, s1_0_2, 0xFC0300FE, 0x03FE0000, 0x0002FFFE, 0xE1FBF901);
	r0 = D(r0, s1_1_0, 0xFDFB0408, 0xF9FDF9F7, 0xECF9FEF4, 0xFC010F06);
	r1 = D(r1, s1_1_0, 0x0004FC00, 0x07FE030B, 0x04FDF803, 0x08011000);
	r2 = D(r2, s1_1_0, 0x01030102, 0xFBFBFF0A, 0xFC0203F8, 0x0903F4FD);
	r3 = D(r3, s1_1_0, 0xF7F902FA, 0x0001FE05, 0x0200FB02, 0xFD00F604);
	r4 = D(r4, s1_1_0, 0xED071107, 0xF8FBF3FB, 0x040002F2, 0xFCFD100B);
	r5 = D(r5, s1_1_0, 0xFCFB0700, 0x03FD04FE, 0x03010204, 0x0505F300);
	r6 = D(r6, s1_1_0, 0xF1FA02FC, 0xF7FF0706, 0xFA03F9F9, 0x02F00600);
	r7 = D(r7, s1_1_0, 0x06F80EF0, 0xF903FA07, 0xFE00E60B, 0xF701F902);
	r0 = D(r0, s1_1_1, 0x1407FADF, 0x08FA0D00, 0xBE0BA0D0, 0x09FB0EFC);
	r1 = D(r1, s1_1_1, 0xFE0011F8, 0x0400FFF9, 0x0E02F106, 0xFFF9DA07);
	r2 = D(r2, s1_1_1, 0xFAFE050E, 0xFF02F9EE, 0xFDFAFA0C, 0xF802F616);
	r3 = D(r3, s1_1_1, 0xFFF2CCFE, 0xFB010506, 0x000301F3, 0x0304F9ED);
	r4 = D(r4, s1_1_1, 0xEC0F042D, 0xF2FD00DB, 0xF6FEF530, 0xFC05DD14);
	r5 = D(r5, s1_1_1, 0x05F210D9, 0x1A000CFA, 0xFD03F739, 0x03FB0600);
	r6 = D(r6, s1_1_1, 0xFBF4F311, 0x1003E8F4, 0x0E02FD0F, 0x11FD01C8);
	r7 = D(r7, s1_1_1, 0x08FBFEF8, 0x10FEFDFB, 0x040403DE, 0xFD05EDF4);
	r0 = D(r0, s1_1_2, 0xF700F9E1, 0x2304FEE7, 0xE2FD02F2, 0x09FF002A);
	r1 = D(r1, s1_1_2, 0xFCFEF500, 0x13010C05, 0x0600FE18, 0x03FD0104);
	r2 = D(r2, s1_1_2, 0xFE04FDEE, 0x0400FE05, 0xFDFF00F8, 0xF403FDE5);
	r3 = D(r3, s1_1_2, 0xF2F701E2, 0x0AFFFAF7, 0x01FEF901, 0x040103F9);
	r4 = D(r4, s1_1_2, 0xE604F1DC, 0xFBFDFE0C, 0x010001FC, 0xFCFBFFE4);
	r5 = D(r5, s1_1_2, 0xFEF90217, 0x0AFCFBFD, 0x000000FB, 0x0900FE0C);
	r6 = D(r6, s1_1_2, 0x0203FB21, 0xF6FB04DF, 0xF1FAF8CB, 0x00FB080F);
	r7 = D(r7, s1_1_2, 0xF9FF01EA, 0xFC0000F2, 0x000100F8, 0x02FDFE0F);
	r0 = D(r0, s1_2_0, 0xFBFDFFF4, 0xF900FDFD, 0xEBFF0408, 0xFAFE00FE);
	r1 = D(r1, s1_2_0, 0xFEFEFF00, 0xFFFDFC03, 0x0201FC01, 0xF801FEFA);
	r2 = D(r2, s1_2_0, 0x0602FFF6, 0xFB0001FD, 0x02000002, 0x04010100);
	r3 = D(r3, s1_2_0, 0xFDFFFE0B, 0x04FE0200, 0xFEFFFF00, 0xFCFFFF03);
	r4 = D(r4, s1_2_0, 0xF5FEF8FC, 0xFDFC020B, 0xFB0100FD, 0xF101FAF9);
	r5 = D(r5, s1_2_0, 0xFDFFFB05, 0xFDFFFB00, 0xFEFE0105, 0x02FE00FD);
	r6 = D(r6, s1_2_0, 0x0AFEFF01, 0xFAFD00FF, 0xFDFF0001, 0xEAFA09EE);
	r7 = D(r7, s1_2_0, 0xFBFEFE06, 0x00FF0300, 0x0400FF00, 0x0201FE03);
	r0 = D(r0, s1_2_1, 0xFC050302, 0xF20405F6, 0xCAFDFC0F, 0xF401FDFD);
	r1 = D(r1, s1_2_1, 0xFA02FF04, 0xFF0203FD, 0x07000800, 0x02FF0302);
	r2 = D(r2, s1_2_1, 0x00050104, 0xF7030003, 0x04FF03ED, 0x0AFFFEFC);
	r3 = D(r3, s1_2_1, 0x01FF0101, 0xFEFF050A, 0xFDFEFEFE, 0xF9010001);
	r4 = D(r4, s1_2_1, 0x04FF10E1, 0xF200FD01, 0xFE000001, 0x04000310);
	r5 = D(r5, s1_2_1, 0x05FCF80A, 0xF701030C, 0xFA00FFFF, 0xFB01FF0B);
	r6 = D(r6, s1_2_1, 0x03FE0412, 0x0000FE0D, 0xF8000006, 0xEC0B0704);
	r7 = D(r7, s1_2_1, 0xF7FC03F5, 0xFD00FE09, 0xFE02FEFA, 0xFD000105);
	r0 = D(r0, s1_2_2, 0xFD0000F4, 0xFD06FEFE, 0xDEF3FBF0, 0xFDFEFEFC);
	r1 = D(r1, s1_2_2, 0xFD0201FE, 0x0901010A, 0x0100FFFC, 0xF8FE02F5);
	r2 = D(r2, s1_2_2, 0x0402FE00, 0xFC00FE00, 0xFE0001FE, 0x01FFFF0C);
	r3 = D(r3, s1_2_2, 0xFEFFFCF5, 0xFBFFFF07, 0xFBFF02FC, 0xF4FFFFF8);
	r4 = D(r4, s1_2_2, 0xEDF9FEF2, 0xFD02FE01, 0xFF0000FD, 0xFAFDFE02);
	r5 = D(r5, s1_2_2, 0xFEFE00E8, 0xFA020003, 0xFDFF0001, 0x000202F8);
	r6 = D(r6, s1_2_2, 0x01FF0102, 0xF7FEFEFB, 0x0000FE01, 0xF6FFFBF2);
	r7 = D(r7, s1_2_2, 0xFC00FE00, 0xFD0000F9, 0xFE0100FD, 0xFF02FEFB);
	f0 = vec4(r0) * 6.2000124e-05;
	f0 += vec4(-1.474e-02, -2.440e-04, -1.277e-02, 3.219e-03);
	f0 = clamp(f0, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 0), f0);
	f1 = vec4(r1) * 6.2000124e-05;
	f1 += vec4(-4.806e-03, 1.729e-03, -7.468e-03, -7.817e-03);
	f1 = clamp(f1, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 0), f1);
	f2 = vec4(r2) * 6.2000124e-05;
	f2 += vec4(1.543e-04, -1.262e-02, -7.430e-03, -9.842e-03);
	f2 = clamp(f2, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 1), f2);
	f3 = vec4(r3) * 6.2000124e-05;
	f3 += vec4(-1.324e-02, -7.475e-03, -6.510e-03, -8.396e-03);
	f3 = clamp(f3, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 1), f3);
	f4 = vec4(r4) * 6.2000124e-05;
	f4 += vec4(-2.738e-02, -1.900e-02, 4.013e-03, -1.450e-02);
	f4 = clamp(f4, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 0), f4);
	f5 = vec4(r5) * 6.2000124e-05;
	f5 += vec4(-8.288e-04, -9.002e-03, -5.761e-03, -8.587e-03);
	f5 = clamp(f5, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 0), f5);
	f6 = vec4(r6) * 6.2000124e-05;
	f6 += vec4(-1.096e-02, -4.288e-03, 1.444e-03, -2.562e-02);
	f6 = clamp(f6, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 1), f6);
	f7 = vec4(r7) * 6.2000124e-05;
	f7 += vec4(-7.226e-03, 8.229e-04, -5.636e-03, -1.586e-02);
	f7 = clamp(f7, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 1), f7);
}

//!DESC [CuNNy_8x32_DS_vk] -out-shuffle
//!HOOK LUMA
//!COMPUTE 16 16 8 8
//!BIND conv8
//!BIND LUMA
//!WIDTH LUMA.w 2 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 1
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
#ifdef GL_EXT_shader_explicit_arithmetic_types_float16
#	define V4 f16vec4
#	define M4 f16mat4
#	define F float16_t
#else
#	define V4 vec4
#	define M4 mat4
#	define F float
#endif
shared V4 G[8][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(2, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			vec2 p;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(1, 1)) * conv8_pt;
			V4 sr0 = V4(conv8_gather(p, 0));
			V4 sg0 = V4(conv8_gather(p, 1));
			V4 sb0 = V4(conv8_gather(p, 2));
			V4 sa0 = V4(conv8_gather(p, 3));
			G[0][ay][ax] = V4(sr0.w, sg0.w, sb0.w, sa0.w);
			G[1][ay][ax] = V4(sr0.z, sg0.z, sb0.z, sa0.z);
			G[2][ay][ax] = V4(sr0.x, sg0.x, sb0.x, sa0.x);
			G[3][ay][ax] = V4(sr0.y, sg0.y, sb0.y, sa0.y);
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(3, 1)) * conv8_pt;
			V4 sr1 = V4(conv8_gather(p, 0));
			V4 sg1 = V4(conv8_gather(p, 1));
			V4 sb1 = V4(conv8_gather(p, 2));
			V4 sa1 = V4(conv8_gather(p, 3));
			G[4][ay][ax] = V4(sr1.w, sg1.w, sb1.w, sa1.w);
			G[5][ay][ax] = V4(sr1.z, sg1.z, sb1.z, sa1.z);
			G[6][ay][ax] = V4(sr1.x, sg1.x, sb1.x, sa1.x);
			G[7][ay][ax] = V4(sr1.y, sg1.y, sb1.y, sa1.y);
		}
	}
	barrier();
	V4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;
	V4 r0;
	r0 = V4(0.0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2]; s1_0_0 = G[1][xy.y+0][xy.x+0];
	s1_0_1 = G[1][xy.y+0][xy.x+1]; s1_0_2 = G[1][xy.y+0][xy.x+2];
	s1_1_0 = G[1][xy.y+1][xy.x+0]; s1_1_1 = G[1][xy.y+1][xy.x+1];
	s1_1_2 = G[1][xy.y+1][xy.x+2]; s1_2_0 = G[1][xy.y+2][xy.x+0];
	s1_2_1 = G[1][xy.y+2][xy.x+1]; s1_2_2 = G[1][xy.y+2][xy.x+2];
	r0 += M4(1.032e-02, 4.029e-03, 4.262e-03, 1.044e-03, -3.673e-02, -1.665e-02, -4.976e-03, -5.263e-03, 3.331e-03, -8.487e-04, -9.206e-04, 1.641e-04, -7.655e-03, -7.785e-05, -1.505e-05, -8.474e-06) * s0_0_0;
	r0 += M4(-6.655e-03, -1.402e-03, 4.191e-03, 5.573e-03, -8.719e-03, -2.736e-02, -1.576e-04, -4.712e-03, 1.205e-02, 1.389e-02, -4.193e-04, -2.027e-03, -2.070e-02, -2.063e-02, 1.934e-05, 9.726e-05) * s0_0_1;
	r0 += M4(1.626e-03, 1.546e-03, 1.400e-03, 3.417e-03, -6.162e-04, -9.098e-04, 5.658e-05, 2.698e-05, -9.675e-04, 1.187e-03, -4.572e-05, -7.115e-04, -3.555e-05, -7.339e-03, -1.268e-05, -3.591e-05) * s0_0_2;
	r0 += M4(-1.752e-02, 1.604e-03, -6.921e-03, 2.957e-03, 4.573e-02, 4.407e-02, -3.204e-02, 2.508e-02, 1.372e-02, -1.859e-03, 1.507e-02, -2.765e-03, -2.026e-02, 1.226e-04, -2.055e-02, 8.232e-06) * s0_1_0;
	r0 += M4(-5.550e-02, -7.018e-02, -5.352e-02, -4.867e-02, -2.155e-02, -1.604e-02, -1.886e-02, -5.862e-02, 9.154e-02, 1.006e-01, 8.956e-02, 8.666e-02, -5.896e-02, -5.838e-02, -5.972e-02, -5.920e-02) * s0_1_1;
	r0 += M4(4.693e-03, -2.822e-03, 1.504e-03, -1.281e-02, 8.270e-04, -8.443e-03, -3.809e-04, -3.559e-03, -1.607e-03, 1.923e-02, -1.862e-03, 1.462e-02, 7.000e-07, -2.093e-02, 1.321e-05, -2.068e-02) * s0_1_2;
	r0 += M4(3.301e-03, 8.765e-04, -1.995e-03, -4.955e-05, 3.367e-03, 2.183e-06, 3.755e-02, 1.425e-02, 1.954e-04, 9.250e-04, 3.252e-03, 4.885e-04, -6.232e-06, -2.741e-05, -7.222e-03, -9.187e-06) * s0_2_0;
	r0 += M4(4.566e-03, 5.053e-03, -1.488e-02, -1.751e-02, -3.795e-03, -1.720e-04, -8.826e-03, 1.407e-02, -2.319e-03, -1.990e-03, 1.653e-02, 1.522e-02, 7.816e-07, 4.637e-05, -2.020e-02, -2.008e-02) * s0_2_1;
	r0 += M4(9.480e-04, 1.892e-03, 4.363e-03, 4.136e-03, 2.846e-04, -3.527e-04, 4.090e-04, -3.676e-03, 1.067e-03, 3.169e-05, -3.942e-04, 4.965e-03, -3.157e-07, -5.721e-05, -9.774e-05, -7.311e-03) * s0_2_2;
	r0 += M4(-4.659e-04, 3.017e-03, -9.238e-04, -2.127e-04, 1.671e-02, 1.726e-02, 4.427e-03, 3.029e-03, 2.813e-03, 2.815e-04, -8.640e-04, 1.368e-03, 2.204e-02, -1.014e-02, 2.705e-03, -3.391e-03) * s1_0_0;
	r0 += M4(1.180e-02, -2.167e-02, -1.653e-03, 3.841e-04, -1.353e-03, -5.813e-03, 3.631e-04, 2.199e-03, 5.312e-02, 5.672e-02, 1.255e-03, 4.196e-03, -9.857e-03, 2.041e-02, -6.030e-04, -6.506e-04) * s1_0_1;
	r0 += M4(1.219e-03, -6.392e-03, 6.727e-05, 3.172e-04, -4.273e-05, 5.091e-04, 2.317e-04, -2.906e-06, -7.526e-04, 1.388e-02, -3.728e-04, -7.334e-05, 6.438e-04, 2.163e-03, 3.723e-04, -7.099e-04) * s1_0_2;
	r0 += M4(-1.322e-02, -5.188e-04, 3.431e-02, 3.381e-03, 2.676e-01, 1.587e-01, -1.160e-01, -7.931e-02, -6.860e-02, -6.495e-04, -3.688e-02, -7.895e-03, -7.298e-02, 1.548e-02, -4.346e-02, -5.347e-03) * s1_1_0;
	r0 += M4(-1.709e-02, 1.071e-01, 7.625e-02, -3.849e-01, 3.593e-03, 1.062e-01, -6.558e-03, -3.381e-02, 4.138e-02, -7.983e-02, 1.087e-01, 4.113e-02, 1.122e-01, -1.437e-01, 3.235e-02, 2.037e-01) * s1_1_1;
	r0 += M4(1.862e-03, -1.715e-02, -5.549e-04, -1.322e-02, 5.515e-04, -1.765e-03, 4.734e-04, -2.782e-03, 1.848e-03, 3.274e-02, 2.046e-03, 3.945e-02, 1.462e-03, 1.605e-02, -7.135e-04, -1.399e-03) * s1_1_2;
	r0 += M4(-6.846e-04, 2.675e-04, -2.316e-03, 2.212e-03, 5.069e-03, 2.196e-02, 7.105e-03, 1.393e-02, 2.035e-03, -2.047e-04, -2.167e-02, 2.668e-03, 6.621e-03, -4.306e-04, -1.116e-03, 7.489e-03) * s1_2_0;
	r0 += M4(-9.302e-04, -8.689e-04, -1.136e-03, 1.047e-02, -7.055e-03, 9.007e-02, 1.457e-02, 2.466e-01, 1.343e-04, 5.172e-03, -1.605e-02, -4.478e-02, -2.361e-03, 7.843e-03, -2.661e-02, -2.525e-02) * s1_2_1;
	r0 += M4(-1.705e-04, -4.854e-04, 4.013e-04, -1.574e-03, -2.893e-03, 4.915e-05, -1.578e-03, -6.535e-04, -1.070e-03, -4.750e-03, -2.122e-03, -2.290e-03, -2.979e-03, 5.993e-03, -4.782e-04, 1.554e-02) * s1_2_2;
	s0_0_0 = G[2][xy.y+0][xy.x+0]; s0_0_1 = G[2][xy.y+0][xy.x+1];
	s0_0_2 = G[2][xy.y+0][xy.x+2]; s0_1_0 = G[2][xy.y+1][xy.x+0];
	s0_1_1 = G[2][xy.y+1][xy.x+1]; s0_1_2 = G[2][xy.y+1][xy.x+2];
	s0_2_0 = G[2][xy.y+2][xy.x+0]; s0_2_1 = G[2][xy.y+2][xy.x+1];
	s0_2_2 = G[2][xy.y+2][xy.x+2]; s1_0_0 = G[3][xy.y+0][xy.x+0];
	s1_0_1 = G[3][xy.y+0][xy.x+1]; s1_0_2 = G[3][xy.y+0][xy.x+2];
	s1_1_0 = G[3][xy.y+1][xy.x+0]; s1_1_1 = G[3][xy.y+1][xy.x+1];
	s1_1_2 = G[3][xy.y+1][xy.x+2]; s1_2_0 = G[3][xy.y+2][xy.x+0];
	s1_2_1 = G[3][xy.y+2][xy.x+1]; s1_2_2 = G[3][xy.y+2][xy.x+2];
	r0 += M4(-5.889e-03, 4.939e-04, -4.611e-05, 8.630e-04, 1.790e-05, -3.604e-07, -6.068e-06, 5.998e-07, 1.047e-02, 4.549e-04, 3.541e-04, -7.245e-05, 7.188e-03, 2.873e-06, 1.067e-06, 1.048e-06) * s0_0_0;
	r0 += M4(-1.013e-01, -1.059e-01, -1.492e-03, -2.768e-03, -2.163e-03, -4.474e-04, -2.334e-04, 1.711e-04, 4.919e-02, 3.106e-02, -2.468e-04, 8.768e-04, 2.118e-02, 2.106e-02, -9.730e-08, -3.515e-06) * s0_0_1;
	r0 += M4(3.400e-04, 2.565e-04, 1.093e-03, 8.188e-04, -8.223e-04, -2.502e-03, 1.902e-03, -1.149e-03, 8.379e-03, 2.777e-02, -1.250e-04, -1.338e-03, 2.154e-06, 7.450e-03, 1.089e-06, 2.353e-06) * s0_0_2;
	r0 += M4(-6.067e-05, -9.708e-04, 1.415e-02, -3.357e-05, -1.636e-04, -4.020e-05, -2.711e-04, 1.695e-06, 1.982e-02, 2.408e-03, 1.862e-02, 1.532e-03, 2.189e-02, -3.594e-06, 2.178e-02, -2.781e-06) * s0_1_0;
	r0 += M4(4.149e-04, 5.757e-03, 1.130e-01, 9.839e-02, 4.221e-02, -1.021e-02, -7.391e-04, -1.634e-03, -1.408e-01, -1.206e-02, 1.274e-01, 5.896e-02, 6.470e-02, 6.469e-02, 6.466e-02, 6.421e-02) * s0_1_1;
	r0 += M4(-3.405e-04, -5.073e-03, -1.352e-03, 2.604e-02, -7.003e-02, 1.901e-01, 3.677e-02, 2.245e-02, -3.744e-03, -9.762e-02, -4.725e-03, 6.239e-02, -2.585e-06, 2.142e-02, -1.025e-06, 2.165e-02) * s0_1_2;
	r0 += M4(-3.957e-07, 7.774e-08, 5.353e-04, 1.687e-04, 2.018e-03, -2.664e-04, -2.126e-03, -4.132e-05, 2.576e-04, 5.448e-04, 8.340e-03, 2.808e-03, 8.033e-07, 1.394e-06, 7.644e-03, 3.438e-06) * s0_2_0;
	r0 += M4(1.738e-05, -2.607e-06, -9.850e-04, 1.705e-04, -3.698e-02, 7.058e-03, 9.312e-02, -9.224e-04, 9.595e-05, -3.336e-03, -4.973e-02, -1.012e-02, -7.435e-07, -2.657e-06, 2.167e-02, 2.154e-02) * s0_2_1;
	r0 += M4(-1.965e-05, -9.495e-06, 4.486e-04, -4.012e-04, 1.613e-02, -1.210e-02, -5.015e-02, -1.483e-01, -6.744e-04, 3.317e-03, -9.376e-04, -3.406e-02, -1.622e-07, 2.786e-06, 2.162e-06, 7.432e-03) * s0_2_2;
	r0 += M4(5.799e-03, -1.073e-03, -5.270e-04, 6.818e-05, -1.014e-02, 3.498e-04, 1.518e-03, 6.099e-04, 8.109e-04, 4.371e-04, -2.907e-04, -6.126e-04, 3.473e-03, 2.037e-05, 8.410e-04, 6.670e-04) * s1_0_0;
	r0 += M4(1.169e-02, 2.096e-02, -9.731e-04, -3.482e-03, 3.426e-03, -4.286e-03, 1.594e-03, 1.607e-03, 2.384e-06, 2.507e-03, -9.818e-05, 5.265e-04, 4.606e-03, -1.152e-03, 2.732e-03, 1.996e-03) * s1_0_1;
	r0 += M4(-1.893e-03, -1.916e-03, -7.992e-05, -2.861e-04, -6.125e-05, 2.290e-03, -1.239e-04, 3.778e-04, 1.369e-05, -7.779e-05, -6.780e-08, 2.874e-05, -7.611e-04, -1.379e-03, -1.265e-04, 7.116e-04) * s1_0_2;
	r0 += M4(-2.201e-02, 2.838e-03, 3.423e-02, -7.245e-04, 3.997e-02, -2.838e-03, -2.757e-02, 1.716e-03, -2.318e-02, -9.385e-03, 1.139e-02, -2.253e-03, -2.813e-02, 1.070e-02, -1.577e-02, 4.959e-03) * s1_1_0;
	r0 += M4(-1.761e-01, -1.742e-01, 1.122e-01, 1.543e-01, -1.060e-03, -3.072e-01, -6.942e-03, -6.253e-02, 5.572e-02, 9.106e-02, -5.721e-03, 4.937e-03, 1.931e-01, -2.300e-01, 7.534e-02, -8.474e-02) * s1_1_1;
	r0 += M4(3.019e-03, -2.745e-02, 1.734e-03, 1.517e-02, -6.102e-04, 8.510e-03, 1.014e-04, 5.081e-03, -1.775e-03, 8.760e-03, -4.900e-04, -1.517e-04, -1.992e-03, 8.983e-03, -3.153e-03, 4.770e-03) * s1_1_2;
	r0 += M4(-1.821e-03, -1.388e-03, -1.195e-02, -5.501e-03, -2.483e-03, -1.487e-03, 1.637e-02, -7.186e-03, 9.377e-03, 1.876e-03, -3.794e-02, 5.236e-03, -1.679e-03, 3.076e-04, 1.248e-03, 2.338e-04) * s1_2_0;
	r0 += M4(3.049e-03, 3.514e-03, -2.678e-02, -2.606e-02, 3.927e-03, 4.839e-03, -2.082e-02, -1.361e-02, -2.527e-02, -5.589e-02, 1.463e-01, -1.917e-01, 1.327e-04, 4.543e-03, 6.201e-02, 4.169e-02) * s1_2_1;
	r0 += M4(-8.257e-04, -6.873e-04, -4.470e-03, -1.377e-02, 6.472e-04, 2.406e-03, 1.309e-03, 5.674e-04, -2.336e-03, 6.065e-02, -2.081e-03, 5.072e-02, -9.975e-04, -5.409e-03, -4.177e-04, 7.560e-06) * s1_2_2;
	s0_0_0 = G[4][xy.y+0][xy.x+0]; s0_0_1 = G[4][xy.y+0][xy.x+1];
	s0_0_2 = G[4][xy.y+0][xy.x+2]; s0_1_0 = G[4][xy.y+1][xy.x+0];
	s0_1_1 = G[4][xy.y+1][xy.x+1]; s0_1_2 = G[4][xy.y+1][xy.x+2];
	s0_2_0 = G[4][xy.y+2][xy.x+0]; s0_2_1 = G[4][xy.y+2][xy.x+1];
	s0_2_2 = G[4][xy.y+2][xy.x+2]; s1_0_0 = G[5][xy.y+0][xy.x+0];
	s1_0_1 = G[5][xy.y+0][xy.x+1]; s1_0_2 = G[5][xy.y+0][xy.x+2];
	s1_1_0 = G[5][xy.y+1][xy.x+0]; s1_1_1 = G[5][xy.y+1][xy.x+1];
	s1_1_2 = G[5][xy.y+1][xy.x+2]; s1_2_0 = G[5][xy.y+2][xy.x+0];
	s1_2_1 = G[5][xy.y+2][xy.x+1]; s1_2_2 = G[5][xy.y+2][xy.x+2];
	r0 += M4(2.378e-02, 1.751e-04, -4.211e-02, -8.702e-03, -5.227e-05, 8.313e-06, 1.025e-04, -4.150e-06, -9.541e-05, 2.733e-06, -1.499e-04, 1.722e-05, 8.838e-03, 1.700e-03, -2.947e-03, 8.043e-05) * s0_0_0;
	r0 += M4(1.635e-01, 1.152e-01, -1.247e-01, -1.152e-01, 2.889e-03, -2.772e-04, 1.368e-03, -4.323e-04, 4.851e-02, -3.809e-04, 2.288e-03, 8.511e-04, 2.910e-02, 3.014e-02, -1.434e-03, -3.227e-03) * s0_0_1;
	r0 += M4(2.064e-02, 9.131e-02, -1.474e-02, -6.897e-02, 1.631e-02, 2.472e-02, -2.094e-03, -6.492e-04, 2.214e-03, -6.473e-02, -1.835e-03, -4.879e-03, -4.074e-03, -3.503e-02, 3.732e-03, -6.427e-03) * s0_0_2;
	r0 += M4(-1.108e-04, 5.329e-04, 9.150e-03, 1.950e-04, -1.703e-04, -3.092e-05, 5.533e-04, -1.172e-07, -1.552e-04, 1.971e-05, 8.642e-04, -1.459e-05, 2.052e-03, 1.765e-03, 2.474e-02, 6.700e-04) * s0_1_0;
	r0 += M4(-2.623e-03, -1.699e-03, 2.963e-02, 2.948e-02, 1.470e-01, -2.152e-03, 4.924e-02, -3.872e-03, 1.633e-01, 2.450e-03, 1.938e-01, 3.608e-05, 7.690e-02, -2.456e-02, -2.760e-01, 9.022e-02) * s0_1_1;
	r0 += M4(-1.336e-04, -1.782e-03, 7.208e-03, 1.606e-02, 9.275e-03, -2.176e-01, -3.538e-02, 9.244e-02, -1.694e-03, -1.410e-01, 2.165e-03, -2.104e-01, 9.948e-04, 4.089e-02, 3.560e-03, 2.620e-02) * s0_1_2;
	r0 += M4(5.176e-09, -1.107e-07, -4.040e-07, -5.434e-06, -2.164e-04, 1.468e-04, 4.149e-03, 8.476e-05, 7.868e-05, -3.625e-07, -7.827e-04, 5.461e-08, 1.522e-03, 1.395e-04, -1.691e-03, -6.441e-04) * s0_2_0;
	r0 += M4(-2.202e-06, 1.676e-06, -1.587e-06, 1.278e-05, -9.078e-03, 5.985e-03, -2.491e-02, 8.820e-03, 9.305e-04, -6.497e-04, 2.765e-02, 1.586e-04, 1.572e-03, -9.625e-04, 7.460e-03, 3.132e-03) * s0_2_1;
	r0 += M4(4.347e-06, 3.152e-06, 1.884e-06, 4.399e-05, 1.598e-03, 6.479e-03, 3.008e-02, -2.886e-02, -1.067e-03, -2.924e-03, 1.952e-03, -1.326e-02, 4.994e-04, 9.516e-04, -9.379e-05, 3.267e-03) * s0_2_2;
	r0 += M4(1.239e-02, -7.928e-04, 4.520e-06, -4.767e-04, -3.088e-02, -2.097e-03, 1.252e-03, -2.254e-03, 2.156e-03, 1.039e-04, -5.068e-04, -1.716e-05, -2.204e-02, 1.415e-03, -1.566e-03, -6.095e-04) * s1_0_0;
	r0 += M4(1.499e-01, 1.551e-01, 1.635e-04, 1.255e-03, -4.016e-02, -5.385e-02, 2.526e-03, 5.860e-03, 9.741e-03, 2.117e-03, -1.762e-04, 1.138e-03, 6.680e-03, -6.651e-02, -8.553e-03, -1.256e-04) * s1_0_1;
	r0 += M4(-1.007e-03, 1.348e-02, -1.226e-03, -1.677e-03, -1.033e-03, -1.520e-02, -1.755e-04, 1.924e-03, 1.058e-03, 3.939e-03, 8.320e-04, 1.432e-03, 1.504e-03, 3.142e-02, 1.361e-03, 1.203e-04) * s1_0_2;
	r0 += M4(-4.971e-04, 2.408e-04, -2.097e-02, -5.164e-04, 3.333e-02, -4.346e-03, -2.021e-02, 4.207e-03, 6.683e-03, 1.162e-03, 3.207e-03, -3.820e-05, -2.266e-02, -2.847e-03, -4.260e-02, 5.030e-04) * s1_1_0;
	r0 += M4(-1.926e-04, -2.875e-03, -1.362e-01, -1.261e-01, 1.438e-01, 1.571e-01, -1.003e-01, -1.239e-01, -3.758e-01, 3.003e-02, 1.527e-02, 3.472e-03, 9.760e-02, -2.496e-02, 9.783e-02, -1.348e-01) * s1_1_1;
	r0 += M4(2.312e-04, 2.691e-03, -2.012e-03, -2.741e-02, -1.461e-03, 3.091e-02, 4.547e-03, 1.468e-03, 6.181e-03, 6.603e-02, -1.137e-03, 6.375e-03, -1.527e-04, 6.434e-02, 2.050e-03, 8.423e-02) * s1_1_2;
	r0 += M4(-2.136e-04, -1.534e-04, 7.828e-05, -5.421e-04, -7.143e-05, 5.535e-05, 1.428e-02, 1.474e-04, 1.464e-03, -3.891e-04, -3.744e-03, 4.857e-04, 3.104e-03, 1.777e-03, 2.484e-03, 7.011e-04) * s1_2_0;
	r0 += M4(4.431e-04, 2.527e-04, 1.485e-03, 6.610e-04, -8.592e-04, 1.091e-04, 3.982e-02, 4.480e-02, -5.631e-03, 1.252e-03, 7.771e-04, -3.520e-03, 1.320e-03, -9.919e-04, 3.051e-02, 1.801e-02) * s1_2_1;
	r0 += M4(5.506e-05, 7.290e-05, -1.640e-03, -2.783e-04, 4.041e-04, -1.949e-04, -3.868e-04, 9.729e-03, 6.913e-04, -4.545e-03, -2.581e-03, 1.692e-02, 3.246e-04, 7.886e-04, -5.186e-04, 1.593e-02) * s1_2_2;
	s0_0_0 = G[6][xy.y+0][xy.x+0]; s0_0_1 = G[6][xy.y+0][xy.x+1];
	s0_0_2 = G[6][xy.y+0][xy.x+2]; s0_1_0 = G[6][xy.y+1][xy.x+0];
	s0_1_1 = G[6][xy.y+1][xy.x+1]; s0_1_2 = G[6][xy.y+1][xy.x+2];
	s0_2_0 = G[6][xy.y+2][xy.x+0]; s0_2_1 = G[6][xy.y+2][xy.x+1];
	s0_2_2 = G[6][xy.y+2][xy.x+2]; s1_0_0 = G[7][xy.y+0][xy.x+0];
	s1_0_1 = G[7][xy.y+0][xy.x+1]; s1_0_2 = G[7][xy.y+0][xy.x+2];
	s1_1_0 = G[7][xy.y+1][xy.x+0]; s1_1_1 = G[7][xy.y+1][xy.x+1];
	s1_1_2 = G[7][xy.y+1][xy.x+2]; s1_2_0 = G[7][xy.y+2][xy.x+0];
	s1_2_1 = G[7][xy.y+2][xy.x+1]; s1_2_2 = G[7][xy.y+2][xy.x+2];
	r0 += M4(-1.606e-02, 1.013e-03, 1.018e-03, 8.663e-04, 2.354e-02, -6.368e-04, 1.559e-03, -5.070e-04, -4.915e-03, -2.138e-03, -2.440e-03, 4.375e-04, -1.012e-03, 1.211e-05, -6.128e-04, 2.908e-06) * s0_0_0;
	r0 += M4(-1.869e-02, -4.333e-02, -2.610e-03, -2.276e-03, -3.841e-03, 8.081e-02, 4.049e-03, 2.145e-03, -1.453e-02, -2.724e-02, 3.073e-03, 1.049e-03, -2.178e-02, -4.548e-03, -1.471e-02, -2.327e-03) * s0_0_1;
	r0 += M4(-3.767e-03, 2.191e-03, -6.937e-04, -7.104e-04, -3.954e-04, -2.829e-02, -2.905e-03, -1.289e-03, 2.679e-03, -2.670e-03, 4.654e-04, 4.584e-04, -3.099e-02, -4.217e-02, -1.811e-02, -2.848e-02) * s0_0_2;
	r0 += M4(-7.396e-03, -6.127e-04, -2.027e-02, 6.237e-06, 5.061e-02, 7.126e-04, 4.944e-02, -6.892e-04, 3.216e-02, -1.865e-03, 3.641e-02, 9.261e-04, -2.461e-04, 2.099e-06, -3.602e-06, 2.996e-05) * s0_1_0;
	r0 += M4(-5.163e-02, -2.318e-02, -1.284e-01, -8.129e-02, -1.593e-01, 1.036e-01, -1.403e-01, 1.920e-01, -1.535e-01, 2.482e-01, -7.397e-02, 1.900e-02, -4.250e-03, -8.479e-04, -1.172e-02, -1.942e-03) * s0_1_1;
	r0 += M4(-6.915e-03, -4.386e-02, -1.277e-03, -3.210e-02, 2.286e-03, -6.135e-02, 6.759e-04, -7.837e-02, 3.452e-03, -4.439e-02, 5.795e-03, -1.898e-02, -2.712e-03, -6.753e-03, -1.731e-02, -2.472e-02) * s0_1_2;
	r0 += M4(-1.402e-04, 1.037e-04, 1.568e-04, 1.532e-04, 1.454e-03, 1.579e-05, 1.537e-02, 6.004e-04, 2.716e-04, 2.654e-04, 1.362e-02, -5.273e-04, -4.332e-07, -1.933e-06, -4.101e-04, -9.794e-06) * s0_2_0;
	r0 += M4(2.466e-03, 3.781e-04, -9.629e-03, -3.636e-03, -1.798e-03, -1.040e-03, -4.724e-02, 1.465e-02, 3.729e-03, -2.462e-03, 8.268e-02, 8.523e-02, -4.448e-05, -1.832e-05, -4.452e-04, -4.014e-04) * s0_2_1;
	r0 += M4(-2.543e-04, 1.497e-03, -1.858e-03, -8.965e-03, -1.285e-03, 6.659e-05, 2.404e-03, -1.397e-02, 5.723e-03, 8.023e-03, 7.174e-04, -9.253e-03, 3.400e-05, -4.651e-05, -9.901e-04, -2.476e-03) * s0_2_2;
	r0 += M4(2.786e-03, -1.504e-03, -1.526e-03, -1.492e-04, 1.735e-02, -9.879e-04, 3.932e-03, 3.269e-04, 2.795e-04, 9.200e-05, -4.287e-04, 1.438e-05, 2.191e-03, 4.583e-04, -5.641e-05, -1.256e-04) * s1_0_0;
	r0 += M4(5.811e-02, 1.051e-02, 9.324e-04, 1.680e-03, -5.994e-02, 3.723e-02, 7.003e-03, 1.793e-03, -2.207e-02, 4.621e-04, -3.518e-04, -1.272e-04, 1.001e-03, 3.748e-03, -7.367e-04, -4.420e-04) * s1_0_1;
	r0 += M4(-4.298e-03, 4.199e-02, 4.326e-03, 2.920e-03, -7.724e-04, 7.492e-03, -2.108e-03, 3.035e-03, -5.498e-05, 3.306e-02, 1.079e-03, 2.691e-05, -1.427e-03, -2.011e-03, 8.488e-06, -3.216e-05) * s1_0_2;
	r0 += M4(-2.574e-03, 1.726e-03, 1.188e-02, -1.941e-03, 1.580e-02, 5.356e-04, 3.072e-02, -1.035e-03, 9.458e-04, -1.577e-04, 2.679e-03, 4.442e-05, -9.449e-02, 4.470e-03, 2.128e-03, -5.061e-03) * s1_1_0;
	r0 += M4(8.081e-02, 1.037e-02, -1.812e-01, -2.440e-03, 4.231e-02, 2.722e-02, -3.305e-01, 1.040e-01, -1.123e-01, -2.423e-03, -1.194e-01, 8.780e-04, -5.047e-02, -1.475e-01, 3.334e-04, 7.701e-03) * s1_1_1;
	r0 += M4(4.839e-03, 5.846e-02, -1.976e-02, -1.847e-01, -1.968e-03, 1.972e-02, 5.316e-03, 4.234e-02, -1.327e-03, 1.055e-01, -1.868e-03, 1.304e-01, 2.945e-03, -8.706e-04, -2.261e-03, -1.892e-03) * s1_1_2;
	r0 += M4(5.803e-04, -2.447e-05, -1.027e-03, -6.818e-04, -8.182e-04, -1.109e-04, 5.872e-03, -1.628e-04, 1.942e-04, -7.452e-05, -1.916e-04, -3.104e-05, 4.432e-03, 1.937e-03, 6.794e-02, 3.050e-03) * s1_2_0;
	r0 += M4(-1.221e-03, 2.316e-04, 2.206e-02, 4.528e-03, -1.962e-03, 1.033e-03, 5.221e-03, 9.114e-03, -6.102e-04, 1.088e-03, -1.993e-02, -9.406e-04, -3.381e-03, -4.415e-03, 5.562e-02, 1.140e-01) * s1_2_1;
	r0 += M4(-1.022e-04, -1.645e-03, 7.925e-03, 2.538e-02, -1.025e-03, 2.630e-04, -1.362e-04, 8.545e-03, 3.528e-04, 1.905e-03, 7.894e-05, 1.130e-02, 2.883e-04, 3.542e-03, 1.804e-03, 9.618e-03) * s1_2_2;
	r0 += V4(-1.243e-11, -5.173e-12, -9.415e-14, 1.129e-13);
	r0 = r0;
	vec2 opt = 0.5 * LUMA_pt;
	vec2 fpos = (vec2(opos) + vec2(0.5)) * opt;
	imageStore(out_image, opos + ivec2(0, 0), vec4(r0.x + LUMA_tex(fpos + vec2(0.0, 0.0) * opt).r, 0.0, 0.0, 1.0));
	imageStore(out_image, opos + ivec2(1, 0), vec4(r0.y + LUMA_tex(fpos + vec2(1.0, 0.0) * opt).r, 0.0, 0.0, 1.0));
	imageStore(out_image, opos + ivec2(0, 1), vec4(r0.z + LUMA_tex(fpos + vec2(0.0, 1.0) * opt).r, 0.0, 0.0, 1.0));
	imageStore(out_image, opos + ivec2(1, 1), vec4(r0.w + LUMA_tex(fpos + vec2(1.0, 1.0) * opt).r, 0.0, 0.0, 1.0));
}
